diff options
Diffstat (limited to 'miscutils')
-rw-r--r-- | miscutils/adjtimex.c | 98 | ||||
-rw-r--r-- | miscutils/hdparm.c | 27 |
2 files changed, 69 insertions, 56 deletions
diff --git a/miscutils/adjtimex.c b/miscutils/adjtimex.c index 67dd0a93b..07f083428 100644 --- a/miscutils/adjtimex.c +++ b/miscutils/adjtimex.c @@ -14,34 +14,46 @@ #include "libbb.h" #include <sys/timex.h> -static const struct { - int bit; - const char *name; -} statlist[] = { - { STA_PLL, "PLL" }, - { STA_PPSFREQ, "PPSFREQ" }, - { STA_PPSTIME, "PPSTIME" }, - { STA_FLL, "FFL" }, - { STA_INS, "INS" }, - { STA_DEL, "DEL" }, - { STA_UNSYNC, "UNSYNC" }, - { STA_FREQHOLD, "FREQHOLD" }, - { STA_PPSSIGNAL, "PPSSIGNAL" }, - { STA_PPSJITTER, "PPSJITTER" }, - { STA_PPSWANDER, "PPSWANDER" }, - { STA_PPSERROR, "PPSERROR" }, - { STA_CLOCKERR, "CLOCKERR" }, - { 0, NULL } +static const uint16_t statlist_bit[] = { + STA_PLL, + STA_PPSFREQ, + STA_PPSTIME, + STA_FLL, + STA_INS, + STA_DEL, + STA_UNSYNC, + STA_FREQHOLD, + STA_PPSSIGNAL, + STA_PPSJITTER, + STA_PPSWANDER, + STA_PPSERROR, + STA_CLOCKERR, + 0 }; +static const char statlist_name[] = + "PLL" "\0" + "PPSFREQ" "\0" + "PPSTIME" "\0" + "FFL" "\0" + "INS" "\0" + "DEL" "\0" + "UNSYNC" "\0" + "FREQHOLD" "\0" + "PPSSIGNAL" "\0" + "PPSJITTER" "\0" + "PPSWANDER" "\0" + "PPSERROR" "\0" + "CLOCKERR" +; -static const char *const ret_code_descript[] = { - "clock synchronized", - "insert leap second", - "delete leap second", - "leap second in progress", - "leap second has occurred", +static const char ret_code_descript[] = + "clock synchronized" "\0" + "insert leap second" "\0" + "delete leap second" "\0" + "leap second in progress" "\0" + "leap second has occurred" "\0" "clock not synchronized" -}; +; int adjtimex_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; int adjtimex_main(int argc, char **argv) @@ -52,7 +64,7 @@ int adjtimex_main(int argc, char **argv) unsigned opt; char *opt_o, *opt_f, *opt_p, *opt_t; struct timex txc; - int i, ret, sep; + int i, ret; const char *descript; txc.modes=0; @@ -81,33 +93,42 @@ int adjtimex_main(int argc, char **argv) ret = adjtimex(&txc); - if (ret < 0) perror("adjtimex"); + if (ret < 0) { + bb_perror_nomsg_and_die(); + } + + if (!(opt & OPT_quiet)) { + int sep; + const char *name; - if (!(opt & OPT_quiet) && ret>=0) { printf( " mode: %d\n" "-o offset: %ld\n" "-f frequency: %ld\n" " maxerror: %ld\n" " esterror: %ld\n" - " status: %d ( ", + " status: %d (", txc.modes, txc.offset, txc.freq, txc.maxerror, txc.esterror, txc.status); /* representative output of next code fragment: "PLL | PPSTIME" */ - sep=0; - for (i=0; statlist[i].name; i++) { - if (txc.status & statlist[i].bit) { - if (sep) fputs(" | ",stdout); - fputs(statlist[i].name,stdout); - sep=1; + name = statlist_name; + sep = 0; + for (i = 0; statlist_bit[i]; i++) { + if (txc.status & statlist_bit[i]) { + if (sep) + fputs(" | ", stdout); + fputs(name, stdout); + sep = 1; } + name += strlen(name) + 1; } descript = "error"; - if (ret >= 0 && ret <= 5) descript = ret_code_descript[ret]; - printf(" )\n" + if (ret <= 5) + descript = nth_string(ret_code_descript, ret); + printf(")\n" "-p timeconstant: %ld\n" " precision: %ld\n" " tolerance: %ld\n" @@ -119,5 +140,6 @@ int adjtimex_main(int argc, char **argv) txc.precision, txc.tolerance, txc.tick, (long)txc.time.tv_sec, (long)txc.time.tv_usec, ret, descript); } - return (ret<0); + + return 0; } diff --git a/miscutils/hdparm.c b/miscutils/hdparm.c index c8129d791..93b1aacb3 100644 --- a/miscutils/hdparm.c +++ b/miscutils/hdparm.c @@ -491,15 +491,6 @@ static uint8_t mode_loop(uint16_t mode_sup, uint16_t mode_sel, int cc, uint8_t * return err_dma; } -static const char *nth_str(const char *strings, int n) -{ - while (n) { - n--; - strings += strlen(strings) + 1; - } - return strings; -} - static const char pkt_str[] ALIGN1 = "Direct-access device" "\0" /* word 0, bits 12-8 = 00 */ "Sequential-access device" "\0" /* word 0, bits 12-8 = 01 */ @@ -710,7 +701,7 @@ static void identify(uint16_t *val) } else if (!(val[GEN_CONFIG] & NOT_ATAPI)) { dev = ATAPI_DEV; eqpt = (val[GEN_CONFIG] & EQPT_TYPE) >> SHIFT_EQPT; - printf("ATAPI %s, with ", eqpt <= 0xf ? nth_str(pkt_str, eqpt) : "unknown"); + printf("ATAPI %s, with ", eqpt <= 0xf ? nth_string(pkt_str, eqpt) : "unknown"); like_std = 3; } else /* "Unknown device type:\n\tbits 15&14 of general configuration word 0 both set to 1.\n" */ @@ -748,7 +739,7 @@ static void identify(uint16_t *val) if (val[MINOR] && (val[MINOR] <= MINOR_MAX)) { if (like_std < 3) like_std = 3; std = actual_ver[val[MINOR]]; - if (std) printf("\n\tUsed: %s ", nth_str(minor_str, val[MINOR])); + if (std) printf("\n\tUsed: %s ", nth_string(minor_str, val[MINOR])); } /* looks like when they up-issue the std, they obsolete one; @@ -847,7 +838,7 @@ static void identify(uint16_t *val) jj = val[GEN_CONFIG] >> 1; for (ii = 1; ii < 15; ii++) { if (jj & 0x0001) - printf("\t%s\n", nth_str(ata1_cfg_str, ii)); + printf("\t%s\n", nth_string(ata1_cfg_str, ii)); jj >>=1; } } @@ -1070,7 +1061,7 @@ static void identify(uint16_t *val) jj = val[CMDS_SUPP_0]; kk = val[CMDS_EN_0]; for (ii = 0; ii < NUM_CMD_FEAT_STR; ii++) { - const char *feat_str = nth_str(cmd_feat_str, ii); + const char *feat_str = nth_string(cmd_feat_str, ii); if ((jj & 0x8000) && (*feat_str != '\0')) { printf("\t%s\t%s\n", (kk & 0x8000) ? " *" : "", feat_str); } @@ -1088,7 +1079,7 @@ static void identify(uint16_t *val) } /* Removable Media Status Notification feature set */ if ((val[RM_STAT] & RM_STAT_BITS) == RM_STAT_SUP) - printf("\t%s supported\n", nth_str(cmd_feat_str, 27)); + printf("\t%s supported\n", nth_string(cmd_feat_str, 27)); /* security */ if ((eqpt != CDROM) && (like_std > 3) @@ -1100,7 +1091,7 @@ static void identify(uint16_t *val) jj = val[SECU_STATUS]; if (jj) { for (ii = 0; ii < NUM_SECU_STR; ii++) { - printf("\t%s\t%s\n", (!(jj & 0x0001)) ? "not" : "", nth_str(secu_str, ii)); + printf("\t%s\t%s\n", (!(jj & 0x0001)) ? "not" : "", nth_string(secu_str, ii)); jj >>=1; } if (val[SECU_STATUS] & SECU_ENABLED) { @@ -1182,13 +1173,13 @@ static void dump_identity(const struct hd_driveid *id) id->model, id->fw_rev, id->serial_no); for (i = 0; i <= 15; i++) { if (id->config & (1<<i)) - printf(" %s", nth_str(cfg_str, i)); + printf(" %s", nth_string(cfg_str, i)); } printf(" }\n RawCHS=%u/%u/%u, TrkSize=%u, SectSize=%u, ECCbytes=%u\n" " BuffType=(%u) %s, BuffSize=%ukB, MaxMultSect=%u", id->cyls, id->heads, id->sectors, id->track_bytes, id->sector_bytes, id->ecc_bytes, - id->buf_type, nth_str(BuffType, (id->buf_type > 3) ? 0 : id->buf_type), + id->buf_type, nth_string(BuffType, (id->buf_type > 3) ? 0 : id->buf_type), id->buf_size/2, id->max_multsect); if (id->max_multsect) { printf(", MultSect="); @@ -1294,7 +1285,7 @@ static void dump_identity(const struct hd_driveid *id) if ((id->minor_rev_num && id->minor_rev_num <= 31) || (id->major_rev_num && id->minor_rev_num <= 31) ) { - printf("\n Drive conforms to: %s: ", (id->minor_rev_num <= 31) ? nth_str(minor_str, id->minor_rev_num) : "unknown"); + printf("\n Drive conforms to: %s: ", (id->minor_rev_num <= 31) ? nth_string(minor_str, id->minor_rev_num) : "unknown"); if (id->major_rev_num != 0x0000 && /* NOVAL_0 */ id->major_rev_num != 0xFFFF) { /* NOVAL_1 */ for (i = 0; i <= 15; i++) { |