aboutsummaryrefslogtreecommitdiff
path: root/coreutils
diff options
context:
space:
mode:
authorRon Yorston <rmy@pobox.com>2023-07-16 08:49:50 +0100
committerRon Yorston <rmy@pobox.com>2023-07-16 08:49:50 +0100
commitbc0d14ee8eb9720a5df097f5620c4b4c679b6c98 (patch)
tree8aaac80f79822ac2f590854dfecc4af91c0cedd4 /coreutils
parent51ba60c766e010f67dd410ad31a2c4814a8440e4 (diff)
downloadbusybox-w32-bc0d14ee8eb9720a5df097f5620c4b4c679b6c98.tar.gz
busybox-w32-bc0d14ee8eb9720a5df097f5620c4b4c679b6c98.tar.bz2
busybox-w32-bc0d14ee8eb9720a5df097f5620c4b4c679b6c98.zip
date: allow system date to be set
Implement clock_settime(2) and enable the '-s' option to allow the system time to be set. This requires elevated privileges. The code in date.c is now identical to upstream BusyBox. Costs 256-272 bytes.
Diffstat (limited to 'coreutils')
-rw-r--r--coreutils/date.c25
1 files changed, 0 insertions, 25 deletions
diff --git a/coreutils/date.c b/coreutils/date.c
index d8e56ef3b..3a89b6caf 100644
--- a/coreutils/date.c
+++ b/coreutils/date.c
@@ -97,9 +97,7 @@
97//usage:#define date_full_usage "\n\n" 97//usage:#define date_full_usage "\n\n"
98//usage: "Display time (using +FMT), or set time\n" 98//usage: "Display time (using +FMT), or set time\n"
99//usage: "\n -u Work in UTC (don't convert to local time)" 99//usage: "\n -u Work in UTC (don't convert to local time)"
100//usage: IF_NOT_PLATFORM_MINGW32(
101//usage: "\n [-s] TIME Set time to TIME" 100//usage: "\n [-s] TIME Set time to TIME"
102//usage: )
103//usage: "\n -d TIME Display TIME, not 'now'" 101//usage: "\n -d TIME Display TIME, not 'now'"
104//usage: IF_FEATURE_DATE_ISOFMT( 102//usage: IF_FEATURE_DATE_ISOFMT(
105//usage: "\n -D FMT FMT (strptime format) for -s/-d TIME conversion" 103//usage: "\n -D FMT FMT (strptime format) for -s/-d TIME conversion"
@@ -134,30 +132,19 @@
134 132
135enum { 133enum {
136 OPT_RFC2822 = (1 << 0), /* R */ 134 OPT_RFC2822 = (1 << 0), /* R */
137#if !ENABLE_PLATFORM_MINGW32
138 OPT_SET = (1 << 1), /* s */ 135 OPT_SET = (1 << 1), /* s */
139 OPT_UTC = (1 << 2), /* u */ 136 OPT_UTC = (1 << 2), /* u */
140 OPT_DATE = (1 << 3), /* d */ 137 OPT_DATE = (1 << 3), /* d */
141 OPT_REFERENCE = (1 << 4), /* r */ 138 OPT_REFERENCE = (1 << 4), /* r */
142 OPT_ISO8601 = (1 << 5) * ENABLE_FEATURE_DATE_ISOFMT, /* I */ 139 OPT_ISO8601 = (1 << 5) * ENABLE_FEATURE_DATE_ISOFMT, /* I */
143 OPT_STR2DT = (1 << 6) * ENABLE_FEATURE_DATE_ISOFMT, /* D */ 140 OPT_STR2DT = (1 << 6) * ENABLE_FEATURE_DATE_ISOFMT, /* D */
144#else
145 OPT_SET = (0), /* s */
146 OPT_UTC = (1 << 1), /* u */
147 OPT_DATE = (1 << 2), /* d */
148 OPT_REFERENCE = (1 << 3), /* r */
149 OPT_ISO8601 = (1 << 4) * ENABLE_FEATURE_DATE_ISOFMT, /* I */
150 OPT_STR2DT = (1 << 5) * ENABLE_FEATURE_DATE_ISOFMT, /* D */
151#endif
152}; 141};
153 142
154#if ENABLE_LONG_OPTS 143#if ENABLE_LONG_OPTS
155static const char date_longopts[] ALIGN1 = 144static const char date_longopts[] ALIGN1 =
156 "rfc-822\0" No_argument "R" 145 "rfc-822\0" No_argument "R"
157 "rfc-2822\0" No_argument "R" 146 "rfc-2822\0" No_argument "R"
158#if !ENABLE_PLATFORM_MINGW32
159 "set\0" Required_argument "s" 147 "set\0" Required_argument "s"
160#endif
161 "utc\0" No_argument "u" 148 "utc\0" No_argument "u"
162 /* "universal\0" No_argument "u" */ 149 /* "universal\0" No_argument "u" */
163 "date\0" Required_argument "d" 150 "date\0" Required_argument "d"
@@ -187,25 +174,13 @@ int date_main(int argc UNUSED_PARAM, char **argv)
187 char *isofmt_arg = NULL; 174 char *isofmt_arg = NULL;
188 175
189 opt = getopt32long(argv, "^" 176 opt = getopt32long(argv, "^"
190#if !ENABLE_PLATFORM_MINGW32
191 "Rs:ud:r:" 177 "Rs:ud:r:"
192#else
193 "Rud:r:"
194#endif
195 IF_FEATURE_DATE_ISOFMT("I::D:") 178 IF_FEATURE_DATE_ISOFMT("I::D:")
196#if !ENABLE_PLATFORM_MINGW32
197 "\0" 179 "\0"
198 "d--s:s--d" 180 "d--s:s--d"
199 IF_FEATURE_DATE_ISOFMT(":R--I:I--R"), 181 IF_FEATURE_DATE_ISOFMT(":R--I:I--R"),
200#else
201 IF_FEATURE_DATE_ISOFMT("\0R--I:I--R"),
202#endif
203 date_longopts, 182 date_longopts,
204#if !ENABLE_PLATFORM_MINGW32
205 &date_str, &date_str, &filename 183 &date_str, &date_str, &filename
206#else
207 &date_str, &filename
208#endif
209 IF_FEATURE_DATE_ISOFMT(, &isofmt_arg, &fmt_str2dt) 184 IF_FEATURE_DATE_ISOFMT(, &isofmt_arg, &fmt_str2dt)
210 ); 185 );
211 argv += optind; 186 argv += optind;