Forum Post: Re: Best Way To Create A Temporary Unique File-name?

  • Thread starter Thread starter Jeff Ledbetter
  • Start date Start date
Status
Not open for further replies.
J

Jeff Ledbetter

Guest
This is our getTempPathname function. It's not the most glorious code in the world, but it works. I'm sure using a GUID as the basename is more much elegant but this was written before that. RETURNS CHARACTER ( INPUT Pdir AS CHARACTER, INPUT Pext AS CHARACTER ) : /*------------------------------------------------------------------------------ Purpose: Generate a scratch file pathname with specified directory and extension. Notes: ------------------------------------------------------------------------------*/ DEFINE VARIABLE Mbasename AS CHARACTER NO-UNDO. DEFINE VARIABLE Merror AS CHARACTER NO-UNDO. DEFINE VARIABLE Mfilename AS CHARACTER NO-UNDO. DEFINE VARIABLE Mpathname AS CHARACTER NO-UNDO. /* In the unlikely event that we generate an existing pathname, we loop until we have a non-existent pathname. (Shamelessly borrowed from adecomm/ _tmpfile.p) */ DO WHILE TRUE: ASSIGN /* Start with 8-digit basename */ Mbasename = STRING(RANDOM(0,9999),"9999") + STRING((TIME * 100 + ETIME) MODULO 10000,"9999") /* Append extention, if specified */ Mfilename = Mbasename + (IF Pext <> "" THEN "." + Pext ELSE "") /* Prefix with directory, if specified */ Mpathname = (IF Pdir <> "" THEN REPLACE(Pdir,"~\","~/") + (IF SUBSTRING(Pdir,LENGTH(Pdir),1) = "/" OR SUBSTRING(Pdir,LENGTH(Pdir),1) = "~\" THEN "" ELSE "/") ELSE "") + Mfilename. /* If the file doesn't exist, then leave the loop */ IF SEARCH(Mpathname) = ? THEN LEAVE. END. IF Pdir <> "" THEN DO: Merror = DYNAMIC-FUNCTION('fnRtbMakeOSPath':U,Mpathname). IF Merror <> "" THEN Mpathname = ?. END. RETURN Mpathname. END FUNCTION.

Continue reading...
 
Status
Not open for further replies.
Back
Top