Пример #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 );	
	}	
}
Пример #2
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);
	}
}