Beispiel #1
0
extern int hwclock_main ( int argc, char **argv )
{
	int	opt;
	enum OpMode mode = SHOW;
	int utc = 0;
	int utc_arg = 0;

#ifdef CONFIG_FEATURE_HWCLOCK_LONGOPTIONS
	struct option long_options[] = {
		{ "show",      0, 0, 'r' },
		{ "utc",       0, 0, 'u' },
		{ "localtime", 0, 0, 'l' },
		{ "hctosys",   0, 0, 's' },
		{ "systohc",   0, 0, 'w' },
		{ 0,           0, 0, 0 }
	};
	
	while (( opt = getopt_long ( argc, argv, "rwsul", long_options, 0 )) != EOF ) {
#else
	while (( opt = getopt ( argc, argv, "rwsul" )) != EOF ) {
#endif
		switch ( opt ) {
		case 'r': 
			mode = SHOW; 
			break;
		case 'w': 
			mode = SYSTOHC;
			break;
		case 's': 
			mode = HCTOSYS;
			break;
		case 'u': 
			utc = 1;
			utc_arg = 1;
			break;
		case 'l': // -l is not supported by the normal hwclock (only --localtime)
			utc = 0;
			utc_arg = 1;
			break;
		default:
			bb_show_usage();
			break;
		}
	}

	if ( !utc_arg )
		utc = check_utc ( );
	
	switch ( mode ) {
	case SYSTOHC:
		return from_sys_clock ( utc );

	case HCTOSYS:
		return to_sys_clock ( utc );

	case SHOW:
	default:
		return show_clock ( utc );	
	}	
}
Beispiel #2
0
int hwclock_main(int argc UNUSED_PARAM, char **argv)
{
	const char *rtcname = NULL;
	unsigned opt;
	int utc;

#if ENABLE_FEATURE_HWCLOCK_LONG_OPTIONS
	static const char hwclock_longopts[] ALIGN1 =
		"localtime\0" No_argument "l" /* short opt is non-standard */
		"utc\0"       No_argument "u"
		"show\0"      No_argument "r"
		"hctosys\0"   No_argument "s"
		"systohc\0"   No_argument "w"
		"systz\0"     No_argument "t" /* short opt is non-standard */
		"rtc\0"       Required_argument "f"
		;
	applet_long_options = hwclock_longopts;
#endif
	opt_complementary = "r--wst:w--rst:s--wrt:t--rsw:l--u:u--l";
	opt = getopt32(argv, "lurswtf:", &rtcname);

	/* If -u or -l wasn't given check if we are using utc */
	if (opt & (HWCLOCK_OPT_UTC | HWCLOCK_OPT_LOCALTIME))
		utc = (opt & HWCLOCK_OPT_UTC);
	else
		utc = rtc_adjtime_is_utc();

	if (opt & HWCLOCK_OPT_HCTOSYS)
		to_sys_clock(&rtcname, utc);
	else if (opt & HWCLOCK_OPT_SYSTOHC)
		from_sys_clock(&rtcname, utc);
	else if (opt & HWCLOCK_OPT_SYSTZ)
		set_system_clock_timezone(utc);
	else
		/* default HWCLOCK_OPT_SHOW */
		show_clock(&rtcname, utc);

	return 0;
}
Beispiel #3
0
int hwclock_main(int argc, char **argv )
{
	unsigned opt;
	int utc;

#if ENABLE_FEATURE_HWCLOCK_LONG_OPTIONS
	static const struct option hwclock_long_options[] = {
		{ "localtime", 0, 0, 'l' },
		{ "utc",       0, 0, 'u' },
		{ "show",      0, 0, 'r' },
		{ "hctosys",   0, 0, 's' },
		{ "systohc",   0, 0, 'w' },
		{ "file",      1, 0, 'f' },
		{ 0,           0, 0, 0 }
	};
	applet_long_options = hwclock_long_options;
#endif
	opt_complementary = "?:r--ws:w--rs:s--wr:l--u:u--l";
	opt = getopt32(argc, argv, "lurswf:", &rtcname);

	/* If -u or -l wasn't given check if we are using utc */
	if (opt & (HWCLOCK_OPT_UTC | HWCLOCK_OPT_LOCALTIME))
		utc = opt & HWCLOCK_OPT_UTC;
	else
		utc = check_utc();

	if (opt & HWCLOCK_OPT_HCTOSYS) {
		return to_sys_clock(utc);
	}
	else if (opt & HWCLOCK_OPT_SYSTOHC) {
		return from_sys_clock(utc);
	} else {
		/* default HWCLOCK_OPT_SHOW */
		return show_clock(utc);
	}
}