/* ------------------------------------------------------------------ */ /* function: Create a directory(tree) */ /* */ /* call: CreateDirectory dirToCreate */ /* */ /* where: dirToCreate - directory to create */ /* */ /* example: call dirToCreate C:\TEST1\TEST2\TEST3\TEST4 */ /* will create the directories */ /* C:\TEST1 */ /* C:\TEST1\TEST2 */ /* C:\TEST1\TEST2\TEST3 */ /* and */ /* C:\TEST1\TEST2\TEST3\TEST4 */ /* */ /* returns: 0 - okay */ /* else OS Error */ /* */ CreateDirectory: PROCEDURE parse arg dirToCreate /* file or device for messages */ prog.__LogAll = "2>NUL 1>NUL" /* init the return code */ thisRC = -1 /* check if the drive is ready */ SIGNAL ON NOTREADY Name CreateDirectoryError call stream fileSpec( "drive", dirToCreate ) || "\*" thisRC = 0 /* save the current directories */ curDir = directory() curDir1 = directory( fileSpec( "drive", dirToCreate ) ) newDir = translate( dirToCreate, "\", "/" ) i = pos( ":", dirToCreate ) if i <> 0 then do parse var dirToCreate lwForTheDir ":" dirToCreate if directory( lwForTheDir || ":\" ) = "" then thisRC = 1 end /* if i <> 0 then */ if thisRC = 0 then do if right( dirToCreate, 1 ) <> "\" then dirToCreate = dirToCreate || "\" do until dirToCreate = "" | thisRC <> 0 parse var dirToCreate newSubDir "\" dirToCreate dirToCreate = strip( dirToCreate ) if newSubDir = '' then /* v3.20 */ iterate /* v3.20 */ if directory( newSubDir ) = "" then do '@md "' || newSubDir || '"' prog.__LogAll /* v3.00 */ if rc = 2 | rc = 1 then do if stream( newSubDir , "c", "QUERY EXISTS" ) <> "" then thisRC = rc end /* if rc = 2 | rc = 1 */ else thisRC = rc if thisRC = 0 then call directory newSubDir end /* if directory( newSubDir ) = "" then */ end /* do until dirToCreate = "" | thisRC <> 0 */ end /* if thisRC = 0 then */ /* restore the current directories */ call directory curDir1 call directory curDir CreateDirectoryError: RETURN thisRC