#usage "Example: Make Directory with a ULP.

" "RUN mkdir subdirectoryname

" "alf@cadsoft.de" 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.

" + 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);