date: move applet and usage bits to date.c
No binary (build failed)
—
(log yok)
| @@ -19,38 +19,7 @@ | |
| /* Input parsing code is always bulky - used heavy duty libc stuff as | |
| much as possible, missed out a lot of bounds checking */ | |
| - | /* Default input handling to save surprising some people */ |
| - | |
| - | /* GNU coreutils 6.9 man page: |
| - | * date [OPTION]... [+FORMAT] |
| - | * date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] |
| - | * -d, --date=STRING |
| - | * display time described by STRING, not `now' |
| - | * -f, --file=DATEFILE |
| - | * like --date once for each line of DATEFILE |
| - | * -r, --reference=FILE |
| - | * display the last modification time of FILE |
| - | * -R, --rfc-2822 |
| - | * output date and time in RFC 2822 format. |
| - | * Example: Mon, 07 Aug 2006 12:34:56 -0600 |
| - | * --rfc-3339=TIMESPEC |
| - | * output date and time in RFC 3339 format. |
| - | * TIMESPEC='date', 'seconds', or 'ns' |
| - | * Date and time components are separated by a single space: |
| - | * 2006-08-07 12:34:56-06:00 |
| - | * -s, --set=STRING |
| - | * set time described by STRING |
| - | * -u, --utc, --universal |
| - | * print or set Coordinated Universal Time |
| - | * |
| - | * Busybox: |
| - | * long options are not supported |
| - | * -f is not supported |
| - | * -I seems to roughly match --rfc-3339, but -I has _optional_ param |
| - | * (thus "-I seconds" doesn't work, only "-Iseconds"), |
| - | * and does not support -Ins |
| - | * -D FMT is a bbox extension for _input_ conversion of -d DATE |
| - | */ |
| + | //applet:IF_DATE(APPLET(date, _BB_DIR_BIN, _BB_SUID_DROP)) |
| //kbuild:lib-$(CONFIG_DATE) += date.o | |
| @@ -69,6 +38,7 @@ | |
| //config: Enable option (-I) to output an ISO-8601 compliant | |
| //config: date/time string. | |
| //config: | |
| + | //config:# defaults to "no": stat's nanosecond field is a bit non-portable |
| //config:config FEATURE_DATE_NANO | |
| //config: bool "Support %[num]N nanosecond format specifier" | |
| //config: default n | |
| @@ -92,6 +62,78 @@ | |
| //config: the same format. With it on, 'date DATE' additionally supports | |
| //config: MMDDhhmm[[YY]YY][.ss] format. | |
| + | /* GNU coreutils 6.9 man page: |
| + | * date [OPTION]... [+FORMAT] |
| + | * date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] |
| + | * -d, --date=STRING |
| + | * display time described by STRING, not `now' |
| + | * -f, --file=DATEFILE |
| + | * like --date once for each line of DATEFILE |
| + | * -r, --reference=FILE |
| + | * display the last modification time of FILE |
| + | * -R, --rfc-2822 |
| + | * output date and time in RFC 2822 format. |
| + | * Example: Mon, 07 Aug 2006 12:34:56 -0600 |
| + | * --rfc-3339=TIMESPEC |
| + | * output date and time in RFC 3339 format. |
| + | * TIMESPEC='date', 'seconds', or 'ns' |
| + | * Date and time components are separated by a single space: |
| + | * 2006-08-07 12:34:56-06:00 |
| + | * -s, --set=STRING |
| + | * set time described by STRING |
| + | * -u, --utc, --universal |
| + | * print or set Coordinated Universal Time |
| + | * |
| + | * Busybox: |
| + | * long options are not supported |
| + | * -f is not supported |
| + | * -I seems to roughly match --rfc-3339, but -I has _optional_ param |
| + | * (thus "-I seconds" doesn't work, only "-Iseconds"), |
| + | * and does not support -Ins |
| + | * -D FMT is a bbox extension for _input_ conversion of -d DATE |
| + | */ |
| + | |
| + | //usage:#define date_trivial_usage |
| + | //usage: "[OPTIONS] [+FMT] [TIME]" |
| + | //usage:#define date_full_usage "\n\n" |
| + | //usage: "Display time (using +FMT), or set time\n" |
| + | //usage: "\nOptions:" |
| + | //usage: IF_NOT_LONG_OPTS( |
| + | //usage: "\n [-s] TIME Set time to TIME" |
| + | //usage: "\n -u Work in UTC (don't convert to local time)" |
| + | //usage: "\n -R Output RFC-2822 compliant date string" |
| + | //usage: ) IF_LONG_OPTS( |
| + | //usage: "\n [-s,--set] TIME Set time to TIME" |
| + | //usage: "\n -u,--utc Work in UTC (don't convert to local time)" |
| + | //usage: "\n -R,--rfc-2822 Output RFC-2822 compliant date string" |
| + | //usage: ) |
| + | //usage: IF_FEATURE_DATE_ISOFMT( |
| + | //usage: "\n -I[SPEC] Output ISO-8601 compliant date string" |
| + | //usage: "\n SPEC='date' (default) for date only," |
| + | //usage: "\n 'hours', 'minutes', or 'seconds' for date and" |
| + | //usage: "\n time to the indicated precision" |
| + | //usage: ) |
| + | //usage: IF_NOT_LONG_OPTS( |
| + | //usage: "\n -r FILE Display last modification time of FILE" |
| + | //usage: "\n -d TIME Display TIME, not 'now'" |
| + | //usage: ) IF_LONG_OPTS( |
| + | //usage: "\n -r,--reference FILE Display last modification time of FILE" |
| + | //usage: "\n -d,--date TIME Display TIME, not 'now'" |
| + | //usage: ) |
| + | //usage: IF_FEATURE_DATE_ISOFMT( |
| + | //usage: "\n -D FMT Use FMT for -d TIME conversion" |
| + | //usage: ) |
| + | //usage: "\n" |
| + | //usage: "\nRecognized TIME formats:" |
| + | //usage: "\n hh:mm[:ss]" |
| + | //usage: "\n [YYYY.]MM.DD-hh:mm[:ss]" |
| + | //usage: "\n YYYY-MM-DD hh:mm[:ss]" |
| + | //usage: "\n [[[[[YY]YY]MM]DD]hh]mm[.ss]" |
| + | //usage: |
| + | //usage:#define date_example_usage |
| + | //usage: "$ date\n" |
| + | //usage: "Wed Apr 12 18:52:41 MDT 2000\n" |
| + | |
| #include "libbb.h" | |
| #if ENABLE_FEATURE_DATE_NANO | |
| # include <sys/syscall.h> | |
| @@ -98,7 +98,6 @@ IF_CROND(APPLET(crond, _BB_DIR_USR_SBIN, _BB_SUID_DROP)) | |
| IF_CRONTAB(APPLET(crontab, _BB_DIR_USR_BIN, _BB_SUID_REQUIRE)) | |
| IF_CRYPTPW(APPLET(cryptpw, _BB_DIR_USR_BIN, _BB_SUID_DROP)) | |
| IF_CUT(APPLET_NOEXEC(cut, cut, _BB_DIR_USR_BIN, _BB_SUID_DROP, cut)) | |
| - | IF_DATE(APPLET(date, _BB_DIR_BIN, _BB_SUID_DROP)) |
| IF_DC(APPLET(dc, _BB_DIR_USR_BIN, _BB_SUID_DROP)) | |
| IF_DD(APPLET_NOEXEC(dd, dd, _BB_DIR_BIN, _BB_SUID_DROP, dd)) | |
| IF_DEALLOCVT(APPLET(deallocvt, _BB_DIR_USR_BIN, _BB_SUID_DROP)) | |
| @@ -702,46 +702,6 @@ INSERT | |
| "$ echo \"Hello world\" | cut -f 2 -d ' '\n" \ | |
| "world\n" | |
| - | #define date_trivial_usage \ |
| - | "[OPTIONS] [+FMT] [TIME]" |
| - | #define date_full_usage "\n\n" \ |
| - | "Display time (using +FMT), or set time\n" \ |
| - | "\nOptions:" \ |
| - | IF_NOT_LONG_OPTS( \ |
| - | "\n [-s] TIME Set time to TIME" \ |
| - | "\n -u Work in UTC (don't convert to local time)" \ |
| - | "\n -R Output RFC-2822 compliant date string" \ |
| - | ) IF_LONG_OPTS( \ |
| - | "\n [-s,--set] TIME Set time to TIME" \ |
| - | "\n -u,--utc Work in UTC (don't convert to local time)" \ |
| - | "\n -R,--rfc-2822 Output RFC-2822 compliant date string" \ |
| - | ) \ |
| - | IF_FEATURE_DATE_ISOFMT( \ |
| - | "\n -I[SPEC] Output ISO-8601 compliant date string" \ |
| - | "\n SPEC='date' (default) for date only," \ |
| - | "\n 'hours', 'minutes', or 'seconds' for date and" \ |
| - | "\n time to the indicated precision" \ |
| - | ) IF_NOT_LONG_OPTS( \ |
| - | "\n -r FILE Display last modification time of FILE" \ |
| - | "\n -d TIME Display TIME, not 'now'" \ |
| - | ) IF_LONG_OPTS( \ |
| - | "\n -r,--reference FILE Display last modification time of FILE" \ |
| - | "\n -d,--date TIME Display TIME, not 'now'" \ |
| - | ) \ |
| - | IF_FEATURE_DATE_ISOFMT( \ |
| - | "\n -D FMT Use FMT for -d TIME conversion" \ |
| - | ) \ |
| - | "\n" \ |
| - | "\nRecognized TIME formats:" \ |
| - | "\n hh:mm[:ss]" \ |
| - | "\n [YYYY.]MM.DD-hh:mm[:ss]" \ |
| - | "\n YYYY-MM-DD hh:mm[:ss]" \ |
| - | "\n [[[[[YY]YY]MM]DD]hh]mm[.ss]" \ |
| - | |
| - | #define date_example_usage \ |
| - | "$ date\n" \ |
| - | "Wed Apr 12 18:52:41 MDT 2000\n" |
| - | |
| #define dd_trivial_usage \ | |
| "[if=FILE] [of=FILE] " IF_FEATURE_DD_IBS_OBS("[ibs=N] [obs=N] ") "[bs=N] [count=N] [skip=N]\n" \ | |
| " [seek=N]" IF_FEATURE_DD_IBS_OBS(" [conv=notrunc|noerror|sync|fsync]") | |