186
186
< span id ="184 "> 184</ span >
187
187
< span id ="185 "> 185</ span >
188
188
< span id ="186 "> 186</ span >
189
+ < span id ="187 "> 187</ span >
190
+ < span id ="188 "> 188</ span >
191
+ < span id ="189 "> 189</ span >
192
+ < span id ="190 "> 190</ span >
193
+ < span id ="191 "> 191</ span >
194
+ < span id ="192 "> 192</ span >
195
+ < span id ="193 "> 193</ span >
196
+ < span id ="194 "> 194</ span >
197
+ < span id ="195 "> 195</ span >
198
+ < span id ="196 "> 196</ span >
199
+ < span id ="197 "> 197</ span >
200
+ < span id ="198 "> 198</ span >
201
+ < span id ="199 "> 199</ span >
202
+ < span id ="200 "> 200</ span >
203
+ < span id ="201 "> 201</ span >
204
+ < span id ="202 "> 202</ span >
205
+ < span id ="203 "> 203</ span >
206
+ < span id ="204 "> 204</ span >
207
+ < span id ="205 "> 205</ span >
208
+ < span id ="206 "> 206</ span >
209
+ < span id ="207 "> 207</ span >
210
+ < span id ="208 "> 208</ span >
189
211
</ pre > < pre class ="rust "> < code > < span class ="comment "> // * This file is part of the uutils coreutils package.</ span >
190
212
< span class ="comment "> // *</ span >
191
213
< span class ="comment "> // * (c) Nicholas Juszczak <juszczakn@gmail.com></ span >
199
221
< span class ="kw "> extern</ span > < span class ="kw "> crate</ span > < span class ="ident "> uucore</ span > ;
200
222
201
223
< span class ="kw "> use</ span > < span class ="ident "> clap</ span > ::{< span class ="ident "> crate_version</ span > , < span class ="ident "> App</ span > , < span class ="ident "> AppSettings</ span > , < span class ="ident "> Arg</ span > , < span class ="ident "> ArgMatches</ span > , < span class ="ident "> OsValues</ span > };
202
- < span class ="kw "> use</ span > < span class ="ident "> std::fs</ span > ;
203
224
< span class ="kw "> use</ span > < span class ="ident "> std::path::Path</ span > ;
204
225
< span class ="kw "> use</ span > < span class ="ident "> uucore::display::Quotable</ span > ;
205
- < span class ="kw "> use</ span > < span class ="ident "> uucore::error</ span > ::{< span class ="ident "> FromIo</ span > , < span class ="ident "> UResult</ span > , < span class ="ident "> USimpleError</ span > };
226
+ < span class ="attribute "> #[< span class ="ident "> cfg</ span > (< span class ="ident "> not</ span > (< span class ="ident "> windows</ span > ))]</ span >
227
+ < span class ="kw "> use</ span > < span class ="ident "> uucore::error::FromIo</ span > ;
228
+ < span class ="kw "> use</ span > < span class ="ident "> uucore::error</ span > ::{< span class ="ident "> UResult</ span > , < span class ="ident "> USimpleError</ span > };
206
229
< span class ="attribute "> #[< span class ="ident "> cfg</ span > (< span class ="ident "> not</ span > (< span class ="ident "> windows</ span > ))]</ span >
207
230
< span class ="kw "> use</ span > < span class ="ident "> uucore::mode</ span > ;
208
231
< span class ="kw "> use</ span > < span class ="ident "> uucore</ span > ::{< span class ="ident "> format_usage</ span > , < span class ="ident "> InvalidEncodingHandling</ span > };
337
360
}
338
361
339
362
< span class ="kw "> fn</ span > < span class ="ident "> mkdir</ span > (< span class ="ident "> path</ span > : < span class ="kw-2 "> &</ span > < span class ="ident "> Path</ span > , < span class ="ident "> recursive</ span > : < span class ="ident "> bool</ span > , < span class ="ident "> mode</ span > : < span class ="ident "> u32</ span > , < span class ="ident "> verbose</ span > : < span class ="ident "> bool</ span > ) -> < span class ="ident "> UResult</ span > < span class ="op "> <</ span > ()< span class ="op "> ></ span > {
340
- < span class ="kw "> let</ span > < span class ="ident "> create_dir</ span > < span class ="op "> =</ span > < span class ="kw "> if</ span > < span class ="ident "> recursive</ span > {
341
- < span class ="ident "> fs::create_dir_all</ span >
342
- } < span class ="kw "> else</ span > {
343
- < span class ="ident "> fs::create_dir</ span >
344
- };
345
-
346
- < span class ="ident "> create_dir</ span > (< span class ="ident "> path</ span > ).< span class ="ident "> map_err_context</ span > (< span class ="op "> |</ span > < span class ="op "> |</ span > < span class ="macro "> format!</ span > (< span class ="string "> "cannot create directory {}"</ span > , < span class ="ident "> path</ span > .< span class ="ident "> quote</ span > ()))< span class ="question-mark "> ?</ span > ;
347
-
348
- < span class ="kw "> if</ span > < span class ="ident "> verbose</ span > {
349
- < span class ="macro "> println!</ span > (
350
- < span class ="string "> "{}: created directory {}"</ span > ,
351
- < span class ="ident "> uucore::util_name</ span > (),
352
- < span class ="ident "> path</ span > .< span class ="ident "> quote</ span > ()
353
- );
354
- }
355
-
363
+ < span class ="ident "> create_dir</ span > (< span class ="ident "> path</ span > , < span class ="ident "> recursive</ span > , < span class ="ident "> verbose</ span > )< span class ="question-mark "> ?</ span > ;
356
364
< span class ="ident "> chmod</ span > (< span class ="ident "> path</ span > , < span class ="ident "> mode</ span > )
357
365
}
358
366
372
380
< span class ="comment "> // chmod on Windows only sets the readonly flag, which isn't even honored on directories</ span >
373
381
< span class ="prelude-val "> Ok</ span > (())
374
382
}
383
+
384
+ < span class ="kw "> fn</ span > < span class ="ident "> create_dir</ span > (< span class ="ident "> path</ span > : < span class ="kw-2 "> &</ span > < span class ="ident "> Path</ span > , < span class ="ident "> recursive</ span > : < span class ="ident "> bool</ span > , < span class ="ident "> verbose</ span > : < span class ="ident "> bool</ span > ) -> < span class ="ident "> UResult</ span > < span class ="op "> <</ span > ()< span class ="op "> ></ span > {
385
+ < span class ="kw "> if</ span > < span class ="ident "> path</ span > .< span class ="ident "> exists</ span > () < span class ="op "> &&</ span > < span class ="op "> !</ span > < span class ="ident "> recursive</ span > {
386
+ < span class ="kw "> return</ span > < span class ="prelude-val "> Err</ span > (< span class ="ident "> USimpleError::new</ span > (
387
+ < span class ="number "> 1</ span > ,
388
+ < span class ="macro "> format!</ span > (< span class ="string "> "{}: File exists"</ span > , < span class ="ident "> path</ span > .< span class ="ident "> display</ span > ()),
389
+ ));
390
+ }
391
+ < span class ="kw "> if</ span > < span class ="ident "> path</ span > < span class ="op "> ==</ span > < span class ="ident "> Path::new</ span > (< span class ="string "> ""</ span > ) {
392
+ < span class ="kw "> return</ span > < span class ="prelude-val "> Ok</ span > (());
393
+ }
394
+
395
+ < span class ="kw "> if</ span > < span class ="ident "> recursive</ span > {
396
+ < span class ="kw "> match</ span > < span class ="ident "> path</ span > .< span class ="ident "> parent</ span > () {
397
+ < span class ="prelude-val "> Some</ span > (< span class ="ident "> p</ span > ) => < span class ="ident "> create_dir</ span > (< span class ="ident "> p</ span > , < span class ="ident "> recursive</ span > , < span class ="ident "> verbose</ span > )< span class ="question-mark "> ?</ span > ,
398
+ < span class ="prelude-val "> None</ span > => {
399
+ < span class ="ident "> USimpleError::new</ span > (< span class ="number "> 1</ span > , < span class ="string "> "failed to create whole tree"</ span > );
400
+ }
401
+ }
402
+ }
403
+
404
+ < span class ="kw "> match</ span > < span class ="ident "> std::fs::create_dir</ span > (< span class ="ident "> path</ span > ) {
405
+ < span class ="prelude-val "> Ok</ span > (()) => {
406
+ < span class ="kw "> if</ span > < span class ="ident "> verbose</ span > {
407
+ < span class ="macro "> println!</ span > (
408
+ < span class ="string "> "{}: created directory {}"</ span > ,
409
+ < span class ="ident "> uucore::util_name</ span > (),
410
+ < span class ="ident "> path</ span > .< span class ="ident "> quote</ span > ()
411
+ );
412
+ }
413
+ < span class ="prelude-val "> Ok</ span > (())
414
+ }
415
+ < span class ="prelude-val "> Err</ span > (< span class ="kw "> _</ span > ) < span class ="kw "> if</ span > < span class ="ident "> path</ span > .< span class ="ident "> is_dir</ span > () => < span class ="prelude-val "> Ok</ span > (()),
416
+ < span class ="prelude-val "> Err</ span > (< span class ="ident "> e</ span > ) => < span class ="prelude-val "> Err</ span > (< span class ="ident "> e</ span > .< span class ="ident "> into</ span > ()),
417
+ }
418
+ }
375
419
</ code > </ pre > </ div >
376
420
</ section > < section id ="search " class ="content hidden "> </ section > </ div > </ main > < div id ="rustdoc-vars " data-root-path ="../../ " data-current-crate ="uu_mkdir " data-themes ="ayu,dark,light " data-resource-suffix ="" data-rustdoc-version ="1.59.0 (9d1b2106e 2022-02-23) " > </ div >
377
421
</ body > </ html >
0 commit comments