diff options
Diffstat (limited to 'util-linux')
-rw-r--r-- | util-linux/hwclock.c | 131 | ||||
-rw-r--r-- | util-linux/readprofile.c | 49 | ||||
-rw-r--r-- | util-linux/switch_root.c | 14 |
3 files changed, 95 insertions, 99 deletions
diff --git a/util-linux/hwclock.c b/util-linux/hwclock.c index 1aff87c11..3a087725e 100644 --- a/util-linux/hwclock.c +++ b/util-linux/hwclock.c @@ -10,14 +10,7 @@ #include <sys/ioctl.h> #include <sys/utsname.h> -#include <ctype.h> -#include <fcntl.h> #include <getopt.h> -#include <stdlib.h> -#include <string.h> -#include <syslog.h> -#include <time.h> -#include <unistd.h> #include "busybox.h" /* Copied from linux/rtc.h to eliminate the kernel dependency */ @@ -42,59 +35,62 @@ struct linux_rtc_time { # endif #endif -static time_t read_rtc(int utc) +static int xopen_rtc(int flags) { int rtc; + rtc = open("/dev/rtc", flags); + if (rtc < 0) { + rtc = open("/dev/misc/rtc", flags); + if (rtc < 0) + bb_perror_msg_and_die("cannot access RTC"); + } + return rtc; +} + +static time_t read_rtc(int utc) +{ struct tm tm; char *oldtz = 0; time_t t = 0; + int rtc = xopen_rtc(O_RDONLY); - if (( rtc = open ( "/dev/rtc", O_RDONLY )) < 0 ) { - if (( rtc = open ( "/dev/misc/rtc", O_RDONLY )) < 0 ) - bb_perror_msg_and_die ( "cannot access RTC" ); - } - memset ( &tm, 0, sizeof( struct tm )); - if ( ioctl ( rtc, RTC_RD_TIME, &tm ) < 0 ) - bb_perror_msg_and_die ( "cannot read time from RTC" ); + memset(&tm, 0, sizeof(struct tm)); + if (ioctl(rtc, RTC_RD_TIME, &tm) < 0 ) + bb_perror_msg_and_die("cannot read time from RTC"); tm.tm_isdst = -1; /* not known */ - close ( rtc ); + close(rtc); - if ( utc ) { - oldtz = getenv ( "TZ" ); - setenv ( "TZ", "UTC 0", 1 ); - tzset ( ); + if (utc) { + oldtz = getenv("TZ"); + setenv("TZ", "UTC 0", 1); + tzset(); } - t = mktime ( &tm ); + t = mktime(&tm); - if ( utc ) { - if ( oldtz ) - setenv ( "TZ", oldtz, 1 ); + if (utc) { + if (oldtz) + setenv("TZ", oldtz, 1); else - unsetenv ( "TZ" ); - tzset ( ); + unsetenv("TZ"); + tzset(); } return t; } static void write_rtc(time_t t, int utc) { - int rtc; struct tm tm; + int rtc = xopen_rtc(O_WRONLY); - if (( rtc = open ( "/dev/rtc", O_WRONLY )) < 0 ) { - if (( rtc = open ( "/dev/misc/rtc", O_WRONLY )) < 0 ) - bb_perror_msg_and_die ( "cannot access RTC" ); - } - - tm = *( utc ? gmtime ( &t ) : localtime ( &t )); + tm = *(utc ? gmtime(&t) : localtime(&t)); tm.tm_isdst = 0; - if ( ioctl ( rtc, RTC_SET_TIME, &tm ) < 0 ) - bb_perror_msg_and_die ( "cannot set the RTC time" ); + if (ioctl(rtc, RTC_SET_TIME, &tm) < 0) + bb_perror_msg_and_die("cannot set the RTC time"); - close ( rtc ); + close(rtc); } static int show_clock(int utc) @@ -103,15 +99,15 @@ static int show_clock(int utc) time_t t; RESERVE_CONFIG_BUFFER(buffer, 64); - t = read_rtc ( utc ); - ptm = localtime ( &t ); /* Sets 'tzname[]' */ + t = read_rtc(utc); + ptm = localtime(&t); /* Sets 'tzname[]' */ - safe_strncpy ( buffer, ctime ( &t ), 64); - if ( buffer [0] ) - buffer [strlen ( buffer ) - 1] = 0; + safe_strncpy(buffer, ctime(&t), 64); + if (buffer[0]) + buffer[strlen(buffer) - 1] = 0; - //printf ( "%s %.6f seconds %s\n", buffer, 0.0, utc ? "" : ( ptm-> tm_isdst ? tzname [1] : tzname [0] )); - printf ( "%s %.6f seconds\n", buffer, 0.0 ); + //printf("%s %.6f seconds %s\n", buffer, 0.0, utc ? "" : (ptm->tm_isdst ? tzname [1] : tzname [0])); + printf( "%s %.6f seconds\n", buffer, 0.0); RELEASE_CONFIG_BUFFER(buffer); return 0; @@ -122,10 +118,10 @@ static int to_sys_clock(int utc) struct timeval tv = { 0, 0 }; const struct timezone tz = { timezone/60 - 60*daylight, 0 }; - tv.tv_sec = read_rtc ( utc ); + tv.tv_sec = read_rtc(utc); - if ( settimeofday ( &tv, &tz )) - bb_perror_msg_and_die ( "settimeofday() failed" ); + if (settimeofday(&tv, &tz)) + bb_perror_msg_and_die("settimeofday() failed"); return 0; } @@ -135,10 +131,10 @@ static int from_sys_clock(int utc) struct timeval tv = { 0, 0 }; struct timezone tz = { 0, 0 }; - if ( gettimeofday ( &tv, &tz )) - bb_perror_msg_and_die ( "gettimeofday() failed" ); + if (gettimeofday(&tv, &tz)) + bb_perror_msg_and_die("gettimeofday() failed"); - write_rtc ( tv.tv_sec, utc ); + write_rtc(tv.tv_sec, utc); return 0; } @@ -150,43 +146,43 @@ static int from_sys_clock(int utc) static int check_utc(void) { int utc = 0; - FILE *f = fopen ( ADJTIME_PATH, "r" ); + FILE *f = fopen(ADJTIME_PATH, "r"); - if ( f ) { + if (f) { RESERVE_CONFIG_BUFFER(buffer, 128); - while ( fgets ( buffer, sizeof( buffer ), f )) { - int len = strlen ( buffer ); + while (fgets(buffer, sizeof(buffer), f)) { + int len = strlen(buffer); - while ( len && isspace ( buffer [len - 1] )) + while (len && isspace(buffer[len - 1])) len--; - buffer [len] = 0; + buffer[len] = 0; - if ( strncmp ( buffer, "UTC", 3 ) == 0 ) { + if (strncmp(buffer, "UTC", 3) == 0 ) { utc = 1; break; } } - fclose ( f ); + fclose(f); RELEASE_CONFIG_BUFFER(buffer); } return utc; } -#define HWCLOCK_OPT_LOCALTIME 0x01 -#define HWCLOCK_OPT_UTC 0x02 -#define HWCLOCK_OPT_SHOW 0x04 -#define HWCLOCK_OPT_HCTOSYS 0x08 -#define HWCLOCK_OPT_SYSTOHC 0x10 +#define HWCLOCK_OPT_LOCALTIME 0x01 +#define HWCLOCK_OPT_UTC 0x02 +#define HWCLOCK_OPT_SHOW 0x04 +#define HWCLOCK_OPT_HCTOSYS 0x08 +#define HWCLOCK_OPT_SYSTOHC 0x10 -int hwclock_main ( int argc, char **argv ) +int hwclock_main(int argc, char **argv ) { unsigned opt; int utc; #if ENABLE_FEATURE_HWCLOCK_LONG_OPTIONS -static const struct option hwclock_long_options[] = { + static const struct option hwclock_long_options[] = { { "localtime", 0, 0, 'l' }, { "utc", 0, 0, 'u' }, { "show", 0, 0, 'r' }, @@ -196,7 +192,6 @@ static const struct option hwclock_long_options[] = { }; applet_long_options = hwclock_long_options; #endif - opt_complementary = "?:r--ws:w--rs:s--wr:l--u:u--l"; opt = getopt32(argc, argv, "lursw"); @@ -207,12 +202,12 @@ static const struct option hwclock_long_options[] = { utc = check_utc(); if (opt & HWCLOCK_OPT_HCTOSYS) { - return to_sys_clock ( utc ); + return to_sys_clock(utc); } else if (opt & HWCLOCK_OPT_SYSTOHC) { - return from_sys_clock ( utc ); + return from_sys_clock(utc); } else { /* default HWCLOCK_OPT_SHOW */ - return show_clock ( utc ); + return show_clock(utc); } } diff --git a/util-linux/readprofile.c b/util-linux/readprofile.c index e635f6bf3..dd810f021 100644 --- a/util-linux/readprofile.c +++ b/util-linux/readprofile.c @@ -44,19 +44,20 @@ static const char defaultpro[] = "/proc/profile"; int readprofile_main(int argc, char **argv) { FILE *map; - const char *mapFile, *proFile, *mult=0; - unsigned long indx=1; + const char *mapFile, *proFile, *mult = 0; + unsigned long indx = 1; size_t len; - uint64_t add0=0; + uint64_t add0 = 0; unsigned int step; unsigned int *buf, total, fn_len; unsigned long long fn_add, next_add; /* current and next address */ char fn_name[S_LEN], next_name[S_LEN]; /* current and next name */ - char mode[8]; - int optAll=0, optInfo=0, optReset=0, optVerbose=0, optNative=0; - int optBins=0, optSub=0; char mapline[S_LEN]; - int maplineno=1; + char mode[8]; + int optAll = 0, optInfo = 0, optReset = 0; + int optVerbose = 0, optNative = 0; + int optBins = 0, optSub = 0; + int maplineno = 1; int header_printed; #define next (current^1) @@ -85,9 +86,9 @@ int readprofile_main(int argc, char **argv) to_write = 1; /* sth different from sizeof(int) */ } - fd = xopen(defaultpro,O_WRONLY); + fd = xopen(defaultpro, O_WRONLY); - if (write(fd, &multiplier, to_write) != to_write) + if (full_write(fd, &multiplier, to_write) != to_write) bb_perror_msg_and_die("error writing %s", defaultpro); close(fd); @@ -101,7 +102,7 @@ int readprofile_main(int argc, char **argv) buf = xmalloc_open_read_close(proFile, &len); if (!optNative) { int entries = len/sizeof(*buf); - int big = 0,small = 0,i; + int big = 0, small = 0, i; unsigned *p; for (p = buf+1; p < buf+entries; p++) { @@ -135,12 +136,12 @@ int readprofile_main(int argc, char **argv) map = xfopen(mapFile, "r"); - while (fgets(mapline,S_LEN,map)) { - if (sscanf(mapline,"%llx %s %s",&fn_add,mode,fn_name) != 3) + while (fgets(mapline, S_LEN, map)) { + if (sscanf(mapline, "%llx %s %s", &fn_add, mode, fn_name) != 3) bb_error_msg_and_die("%s(%i): wrong map line", mapFile, maplineno); - if (!strcmp(fn_name,"_stext")) /* only elf works like this */ { + if (!strcmp(fn_name, "_stext")) /* only elf works like this */ { add0 = fn_add; break; } @@ -153,12 +154,12 @@ int readprofile_main(int argc, char **argv) /* * Main loop. */ - while (fgets(mapline,S_LEN,map)) { + while (fgets(mapline, S_LEN, map)) { unsigned int this = 0; - if (sscanf(mapline,"%llx %s %s",&next_add,mode,next_name) != 3) + if (sscanf(mapline, "%llx %s %s", &next_add, mode, next_name) != 3) bb_error_msg_and_die("%s(%i): wrong map line", - mapFile, maplineno); + mapFile, maplineno); header_printed = 0; @@ -176,10 +177,10 @@ int readprofile_main(int argc, char **argv) while (indx < (next_add-add0)/step) { if (optBins && (buf[indx] || optAll)) { if (!header_printed) { - printf ("%s:\n", fn_name); + printf("%s:\n", fn_name); header_printed = 1; } - printf ("\t%"PRIx64"\t%u\n", (indx - 1)*step + add0, buf[indx]); + printf("\t%"PRIx64"\t%u\n", (indx - 1)*step + add0, buf[indx]); } this += buf[indx++]; } @@ -187,15 +188,15 @@ int readprofile_main(int argc, char **argv) if (optBins) { if (optVerbose || this > 0) - printf (" total\t\t\t\t%u\n", this); + printf(" total\t\t\t\t%u\n", this); } else if ((this || optAll) && (fn_len = next_add-fn_add) != 0) { if (optVerbose) printf("%016llx %-40s %6i %8.4f\n", fn_add, - fn_name,this,this/(double)fn_len); + fn_name, this, this/(double)fn_len); else printf("%6i %-40s %8.4f\n", - this,fn_name,this/(double)fn_len); + this, fn_name, this/(double)fn_len); if (optSub) { unsigned long long scan; @@ -212,7 +213,7 @@ int readprofile_main(int argc, char **argv) } fn_add = next_add; - strcpy(fn_name,next_name); + strcpy(fn_name, next_name); maplineno++; } @@ -223,10 +224,10 @@ int readprofile_main(int argc, char **argv) /* trailer */ if (optVerbose) printf("%016x %-40s %6i %8.4f\n", - 0,"total",total,total/(double)(fn_add-add0)); + 0, "total", total, total/(double)(fn_add-add0)); else printf("%6i %-40s %8.4f\n", - total,"total",total/(double)(fn_add-add0)); + total, "total", total/(double)(fn_add-add0)); fclose(map); free(buf); diff --git a/util-linux/switch_root.c b/util-linux/switch_root.c index 45290c942..4c23f69da 100644 --- a/util-linux/switch_root.c +++ b/util-linux/switch_root.c @@ -35,7 +35,7 @@ static void delete_contents(char *directory) struct stat st; // Don't descend into other filesystems - if (lstat(directory,&st) || st.st_dev != rootdev) return; + if (lstat(directory, &st) || st.st_dev != rootdev) return; // Recursively delete the contents of directories. if (S_ISDIR(st.st_mode)) { @@ -71,8 +71,8 @@ int switch_root_main(int argc, char *argv[]) // Parse args (-c console) - opt_complementary="-2"; - getopt32(argc,argv,"c:",&console); + opt_complementary = "-2"; + getopt32(argc, argv, "c:", &console); // Change to new root directory and verify it's a different fs. @@ -81,7 +81,7 @@ int switch_root_main(int argc, char *argv[]) if (chdir(newroot) || lstat(".", &st1) || lstat("/", &st2) || st1.st_dev == st2.st_dev) { - bb_error_msg_and_die("bad newroot %s",newroot); + bb_error_msg_and_die("bad newroot %s", newroot); } rootdev=st2.st_dev; @@ -111,12 +111,12 @@ int switch_root_main(int argc, char *argv[]) if (console) { close(0); if(open(console, O_RDWR) < 0) - bb_error_msg_and_die("bad console '%s'",console); + bb_error_msg_and_die("bad console '%s'", console); dup2(0, 1); dup2(0, 2); } // Exec real init. (This is why we must be pid 1.) - execv(argv[optind],argv+optind); - bb_error_msg_and_die("bad init '%s'",argv[optind]); + execv(argv[optind], argv+optind); + bb_error_msg_and_die("bad init '%s'", argv[optind]); } |