63 lines
2.0 KiB
Plaintext
63 lines
2.0 KiB
Plaintext
#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);
|
|
|