File tree 2 files changed +34
-1
lines changed
2 files changed +34
-1
lines changed Original file line number Diff line number Diff line change @@ -54,7 +54,7 @@ forEachFile(
54
54
55
55
explicit FileVisitor (Visitor& v)
56
56
: visitor_(v)
57
- {
57
+ {
58
58
}
59
59
60
60
Error
@@ -240,6 +240,18 @@ std::string_view
240
240
getSourceFilename (
241
241
std::string_view pathName);
242
242
243
+ /* * Create a directory.
244
+
245
+ Any missing parent directories will also be created.
246
+
247
+ @param pathName The absolute or relative path
248
+ to create.
249
+ */
250
+ MRDOX_DECL
251
+ Error
252
+ createDirectory (
253
+ std::string_view pathName);
254
+
243
255
} // files
244
256
245
257
} // mrdox
Original file line number Diff line number Diff line change @@ -354,6 +354,27 @@ getSourceFilename(
354
354
return pathName;
355
355
}
356
356
357
+ Error
358
+ createDirectory (
359
+ std::string_view pathName)
360
+ {
361
+ namespace fs = llvm::sys::fs;
362
+
363
+ auto kind = files::getFileType (pathName);
364
+ if (kind.has_error ())
365
+ return kind.error ();
366
+ if (*kind == files::FileType::directory)
367
+ return Error::success ();
368
+ else if (*kind != files::FileType::not_found)
369
+ return formatError (" creating the directory \" {}\" "
370
+ " would overwrite an existing file" , pathName);
371
+
372
+ if (auto ec = fs::create_directories (pathName))
373
+ return formatError (" fs::create_directories(\" {}\" ) returned {}" , pathName, ec);
374
+
375
+ return Error::success ();
376
+ }
377
+
357
378
} // files
358
379
359
380
} // mrdox
You can’t perform that action at this time.
0 commit comments