Linux Audio

Check our new training course

Loading...
Note: File does not exist in v3.15.
  1/* Set tz value
  2 *              by: John Stultz <john.stultz@linaro.org>
  3 *              (C) Copyright Linaro 2016
  4 *              Licensed under the GPLv2
  5 *
  6 *   This program is free software: you can redistribute it and/or modify
  7 *   it under the terms of the GNU General Public License as published by
  8 *   the Free Software Foundation, either version 2 of the License, or
  9 *   (at your option) any later version.
 10 *
 11 *   This program is distributed in the hope that it will be useful,
 12 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 13 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 14 *   GNU General Public License for more details.
 15 */
 16
 17
 18#include <stdio.h>
 19#include <stdlib.h>
 20#include <time.h>
 21#include <sys/time.h>
 22#include <sys/timex.h>
 23#include <string.h>
 24#include <signal.h>
 25#include <unistd.h>
 26#include "../kselftest.h"
 27
 28int set_tz(int min, int dst)
 29{
 30	struct timezone tz;
 31
 32	tz.tz_minuteswest = min;
 33	tz.tz_dsttime = dst;
 34
 35	return settimeofday(0, &tz);
 36}
 37
 38int get_tz_min(void)
 39{
 40	struct timezone tz;
 41	struct timeval tv;
 42
 43	memset(&tz, 0, sizeof(tz));
 44	gettimeofday(&tv, &tz);
 45	return tz.tz_minuteswest;
 46}
 47
 48int get_tz_dst(void)
 49{
 50	struct timezone tz;
 51	struct timeval tv;
 52
 53	memset(&tz, 0, sizeof(tz));
 54	gettimeofday(&tv, &tz);
 55	return tz.tz_dsttime;
 56}
 57
 58int main(int argc, char **argv)
 59{
 60	int i, ret;
 61	int min, dst;
 62
 63	min = get_tz_min();
 64	dst = get_tz_dst();
 65	printf("tz_minuteswest started at %i, dst at %i\n", min, dst);
 66
 67	printf("Checking tz_minuteswest can be properly set: ");
 68	fflush(stdout);
 69	for (i = -15*60; i < 15*60; i += 30) {
 70		ret = set_tz(i, dst);
 71		ret = get_tz_min();
 72		if (ret != i) {
 73			printf("[FAILED] expected: %i got %i\n", i, ret);
 74			goto err;
 75		}
 76	}
 77	printf("[OK]\n");
 78
 79	printf("Checking invalid tz_minuteswest values are caught: ");
 80	fflush(stdout);
 81
 82	if (!set_tz(-15*60-1, dst)) {
 83		printf("[FAILED] %i didn't return failure!\n", -15*60-1);
 84		goto err;
 85	}
 86
 87	if (!set_tz(15*60+1, dst)) {
 88		printf("[FAILED] %i didn't return failure!\n", 15*60+1);
 89		goto err;
 90	}
 91
 92	if (!set_tz(-24*60, dst)) {
 93		printf("[FAILED] %i didn't return failure!\n", -24*60);
 94		goto err;
 95	}
 96
 97	if (!set_tz(24*60, dst)) {
 98		printf("[FAILED] %i didn't return failure!\n", 24*60);
 99		goto err;
100	}
101
102	printf("[OK]\n");
103
104	set_tz(min, dst);
105	return ksft_exit_pass();
106
107err:
108	set_tz(min, dst);
109	return ksft_exit_fail();
110}