/* NB: This routine modifies its input string, and does not always restore it. **returns1onsuccess,0onfailure.
*/ staticint
_gettemp(char *path, registerint *doopen, int extraFlags)
{ registerchar *start, *trv; struct stat sbuf; unsignedint pid;
pid = getpid(); for (trv = path; *trv; ++trv)
; /* extra X's get set to 0's */ while (*--trv == 'X') {
*trv = (pid % 10) + '0';
pid /= 10;
}
/* *checkthetargetdirectory;ifyouhavesixX'sandit *doesn'texistthisrunsfora*very*longtime.
*/ for (start = trv + 1;; --trv) { char saved; if (trv <= path) break;
saved = *trv; if (saved == '/' || saved == '\\') { int rv;
*trv = '\0';
rv = stat(path, &sbuf);
*trv = saved; if (rv) return (0); if (!S_ISDIR(sbuf.st_mode)) {
errno = ENOTDIR; return (0);
} break;
}
}
for (;;) { if (doopen) { if ((*doopen =
open(path, O_CREAT | O_EXCL | O_RDWR | extraFlags, 0600)) >= 0) return (1); if (errno != EEXIST) return (0);
} elseif (stat(path, &sbuf)) return (errno == ENOENT ? 1 : 0);
/* tricky little algorithm for backward compatibility */ for (trv = start;;) { if (!*trv) return (0); if (*trv == 'z')
*trv++ = 'a'; else { if (isdigit((unsignedchar)*trv))
*trv = 'a'; else
++*trv; break;
}
}
} /*NOTREACHED*/
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-10-11)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.