MkTemp

Функция FSF.MkTemp создает имя временного файла на основе шаблона.
char* WINAPI MkTemp(
  char *Dest,
  const char *Prefix
);

Параметры

Dest
Указатель на буфер, который получит полное имя временного файла в верхнем регистре. Размер приемного буфера должен иметь достаточный размер для хранения результирующей строки (путь к каталогу для временных файлов + имя временного файла из 12 символов).
Prefix
Указывает на оканчивающуюся нулем строку-префикс. Максимум первые четыре символа из этой строки будут использованы в качестве префикса имени файла. FAR дополнит символами '0' префикс, если размер Prefix меньше 4.
Если Prefix равен NULL или пустой строке, то будет применен стандартный префикс "FTMP"

Возвращаемое значение

Указатель на Dest, содержащий имя временного файла в верхнем регистре, или NULL, в случае неудачи (не удалось создать уникального имени файла - возможно, что каталог для временных файлов %TEMP% содержит слишком много файлов, попробуйте очистить этот каталог).

Примечание

  1. Имя временного файла формируется объединением пути к временному каталогу (получаемого через вызов функции GetTempPath ), переданного префикса, набора случайных шестнадцатеричных цифр. Формат:

    PrefXXXP.PTT

    здесь
       Pref - 4-х символьный префикс;
       XXX - три 16-ричных цифры;
       PP - две 16-ричных цифры PID (результат функции GetCurrentProcessId );
       TT - две 16-ричных цифры TID (результат функции GetCurrentThreadId ).

  2. Функция, в отличии от FAR 1.70 beta 3, физически не создает файл на диске, только формирует имя.
  3. В FAR 1.70 beta 3 функция работала только с первыми тремя символами префикса.

Пример

char TempName[NM];

FSF.MkTemp(TempName,NULL);        -> "FTMP000D.P50"
FSF.MkTemp(TempName,"");          -> "FTMP000D.P50"
FSF.MkTemp(TempName,"MY");        -> "MY00000D.P50"
FSF.MkTemp(TempName,"BaR");       -> "BAR0000D.P50"
FSF.MkTemp(TempName,"TstPlugin"); -> "TSTP000D.P50"