Files
SyncHome/trunk/ulp/mkdir.ulp

63 lines
2.0 KiB
Plaintext
Raw Normal View History

2023-03-09 10:24:21 +00:00
#usage "Example: Make Directory with a ULP.<p>"
"RUN mkdir subdirectoryname<p>"
"<author>alf@cadsoft.de</author>"
string Version = "1.0.0"; // 2012-04-10 alf@cadsoft.de
string Directory;
string SubDirectory = argv[1];
string DOScommand;
if (!argv[1]) {
dlgMessageBox("!Missing subdirectoryname.<p>" + usage, "OK");
exit(-1);
}
/* **********************************************************************************
Der MicroSoft-Fehler: BACKSLASH
Ein Backslach ist ein Escape-Zeichen um ein Steuerzeichen zu maskieren.
Unter Windows wird als Pfad-Trennzeichen der Backslash '\' benutzt,
und nicht wie unter UNIX der Slash '/'!
Eagle benutzt aus Kompatibilitätsgründen zu Linux und Macintosh intern als
Pfad-Trennzeichen den Slash '/'.
Unter Windows wird in allen File-Funktionen im ULP vor der Ausführung der Slash
zu einem Backslash gewandelt. Damit funktionieren alle ULPs auf allen Plattformen.
Soll unter Windows einem system()-Aufruf ein Pfad- oder Datei-Name übergeben werden,
so muß man zuerst den Slash zu einen Backslash wandeln, da nicht unterschieden
werden kann, ob es sich um einen Pfad oder eine Option des Aufrufes handelt.
********************************************************************************** */
// change slash to backslash for windows
string cs2bs(string s) {
int pos;
do {
pos = strchr(s, '/');
if (pos >= 0) s[pos] = '\\';
} while (pos >= 0);
return s;
}
if (board) board(B) {
Directory = filedir(B.name);
}
else if (schematic) schematic(S) {
Directory = filedir(S.name);
}
else if (library) library(L) {
Directory = filedir(L.name);
}
// Check if exist subdirectory.
string f[];
int n = fileglob(f, Directory+SubDirectory);
if (n) {
//dlgMessageBox("!Directory exist:\n\n" + Directory+SubDirectory, "OK");
exit(0);
}
/*** generate DOS command ***/
sprintf(DOScommand, "CMD.EXE /C MKDIR \"%s%s\"", cs2bs(Directory), cs2bs(SubDirectory) );
system(DOScommand);