]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blob - src/misc-progs/setdate.c
git-svn-id: http://svn.ipfire.org/svn/ipfire/IPFire/source@16 ea5c0bd1-69bd-2848...
[people/pmueller/ipfire-2.x.git] / src / misc-progs / setdate.c
1 /* Ipcop helper program - setdate.c
2 *
3 * Sets the date and time
4 *
5 * (c) Darren Critchley 2003
6 *
7 * $Id: setdate.c,v 1.2 2003/12/11 11:25:54 riddles Exp $
8 *
9 */
10
11 #include <stdio.h>
12 #include <string.h>
13 #include <unistd.h>
14 #include <stdlib.h>
15 #include <sys/types.h>
16 #include "setuid.h"
17
18 int main(int argc, char *argv[])
19 {
20 char command[STRING_SIZE];
21 int a,b,c;
22
23 if (!(initsetuid()))
24 exit(1);
25
26 if (argc < 3)
27 {
28 fprintf(stderr, "Missing arg\n");
29 exit(1);
30 }
31
32 if (! (strlen(argv[1]) < 11 && sscanf(argv[1], "%d-%d-%d", &a, &b, &c) == 3)
33 || (strspn(argv[1], NUMBERS "-" ) != strlen(argv[1])))
34 {
35 fprintf(stderr, "Bad arg\n");
36 exit(1);
37 }
38
39 if (! (strlen(argv[2]) < 6 && sscanf(argv[2], "%d:%d", &a, &b) == 2)
40 || (strspn(argv[2], NUMBERS ":" ) != strlen(argv[2])))
41 {
42 fprintf(stderr, "Bad arg\n");
43 exit(1);
44 }
45
46 memset(command, 0, STRING_SIZE);
47 snprintf(command, STRING_SIZE - 1, "/bin/date -s '%s %s' >/dev/null", argv[1], argv[2]);
48 fprintf(stderr, "Setting Date: %s %s\n", argv[1], argv[2]);
49 safe_system(command);
50
51 return 0;
52 }