ISIS Logo
UTILITIES
EPICS Utilities
mkdir.cpp
Go to the documentation of this file.
1 #include <stdlib.h>
2 #include <string.h>
3 #include <stdio.h>
4 #include <errno.h>
5 #include <math.h>
6 #include <exception>
7 #include <algorithm>
8 #include <stdexcept>
9 #include <iostream>
10 #include <map>
11 #include <list>
12 #include <string>
13 #include <time.h>
14 #include <sstream>
15 #include <fstream>
16 #include <vector>
17 #include <memory>
18 
19 #include "epicsStdlib.h"
20 #include "epicsString.h"
21 #include "dbDefs.h"
22 #include "epicsMutex.h"
23 #include "dbBase.h"
24 #include "dbStaticLib.h"
25 #include "dbFldTypes.h"
26 #include "dbCommon.h"
27 #include "dbAccessDefs.h"
28 #include <epicsTypes.h>
29 #include <epicsTime.h>
30 #include <epicsThread.h>
31 #include <epicsString.h>
32 #include <epicsTimer.h>
33 #include <epicsMutex.h>
34 #include <iocsh.h>
35 #include "envDefs.h"
36 #include "macLib.h"
37 #include "errlog.h"
38 
39 #ifdef _WIN32
40 #include <direct.h>
41 #include <io.h>
42 #else
43 #include <unistd.h>
44 #include <sys/types.h>
45 #include <sys/stat.h>
46 #endif /* _WIN32 */
47 
48 #include <string.h>
49 #include <registryFunction.h>
50 
51 #include <epicsExport.h>
52 
53 #include "utilities.h"
54 
55 static void my_mkdir(const char* path, int options)
56 {
57  if (path == NULL)
58  {
59  errlogPrintf("mkdir: ERROR: NULL args");
60  return;
61  }
62  if (access(path, 06) == 0)
63  {
64  return; // already exists with read + write access
65  }
66 #ifdef _WIN32
67  if (mkdir(path) != 0)
68 #else
69  if (mkdir(path, 0755) != 0)
70 #endif /* _WIN32 */
71  {
72  errlogPrintf("mkdir: ERROR: unable to create \"%s\"", path);
73  }
74 }
75 
76 extern "C" {
77 
78 // EPICS iocsh shell commands
79 
80 static const iocshArg mkdirInitArg0 = { "path", iocshArgString };
81 static const iocshArg mkdirInitArg1 = { "options", iocshArgInt };
82 static const iocshArg * const mkdirInitArgs[] = { &mkdirInitArg0, &mkdirInitArg1 };
83 
84 static const iocshFuncDef mkdirInitFuncDef = {"mkdir", sizeof(mkdirInitArgs) / sizeof(iocshArg*), mkdirInitArgs};
85 
86 static void mkdirInitCallFunc(const iocshArgBuf *args)
87 {
88  my_mkdir(args[0].sval, args[1].ival);
89 }
90 
91 static void mkdirRegister(void)
92 {
93  iocshRegister(&mkdirInitFuncDef, mkdirInitCallFunc);
94 }
95 
96 epicsExportRegistrar(mkdirRegister); // need to be declared via registrar() in utilities.dbd too
97 
98 }
99 
static const iocshArg mkdirInitArg0
Definition: mkdir.cpp:80
static const iocshArg *const mkdirInitArgs[]
Definition: mkdir.cpp:82
static void mkdirInitCallFunc(const iocshArgBuf *args)
Definition: mkdir.cpp:86
static void my_mkdir(const char *path, int options)
Definition: mkdir.cpp:55
static const iocshArg mkdirInitArg1
Definition: mkdir.cpp:81
epicsExportRegistrar(dbLoadRecordsFuncsRegister)
static const iocshFuncDef mkdirInitFuncDef
Definition: mkdir.cpp:84
static void mkdirRegister(void)
Definition: mkdir.cpp:91
Copyright © 2013 Science and Technology Facilities Council | Generated by   doxygen 1.8.5