tmpnam.c
上传用户:nvosite88
上传日期:2007-01-17
资源大小:4983k
文件大小:2k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* tmpnam.c - devise a temporary name. stdio.h */
  2. /* Copyright 1992-1993 Wind River Systems, Inc. */
  3. /* 
  4. modification history 
  5. --------------------
  6. 01d,23sep93,jmm  made tmpnam()'s buffer static (spr 2525)
  7. 01c,05mar93,jdi  documentation cleanup for 5.1.
  8. 01b,20sep92,smb  documentation additions
  9. 01a,29jul92,smb  written.
  10. */ 
  11. /*
  12. DESCRIPTION
  13. INCLUDE FILE: stdio.h, string.h
  14. SEE ALSO: American National Standard X3.159-1989
  15. NOMANUAL
  16. */
  17. #include "vxWorks.h"
  18. #include "stdio.h"
  19. #include "string.h"
  20. /******************************************************************************
  21. *
  22. * tmpnam - generate a temporary file name (ANSI)
  23. *
  24. * This routine generates a string that is a valid file name and not the same
  25. * as the name of an existing file.  It generates a different string each
  26. * time it is called, up to TMP_MAX times.
  27. *
  28. * If the argument is a null pointer, tmpnam() leaves its
  29. * result in an internal static object and returns a pointer to that
  30. * object.  Subsequent calls to tmpnam() may modify the same
  31. * object.  If the argument is not a null pointer, it is assumed to
  32. * point to an array of at least L_tmpnam chars; tmpnam() writes
  33. * its result in that array and returns the argument as its value.
  34. *
  35. * INCLUDE FILES: stdio.h 
  36. *
  37. * RETURNS: A pointer to the file name.
  38. */
  39. char * tmpnam
  40.     (
  41.     char *  s /* name buffer */
  42.     )
  43.     {
  44.     int             index;
  45.     char *          pos;
  46.     ushort_t        t;
  47.     static char     buf [L_tmpnam]; /* internal buffer for name */
  48.     static ushort_t seed = 0; /* used to generate unique name */
  49.     /* if parameter is NULL use internal buffer */
  50.     if (s == NULL)
  51.      s = buf;
  52.     /* generate unique name */
  53.     strcpy (s, "tmp");
  54.     /* fill up the name buffer from the last position */
  55.     index = 5;
  56.     pos = s + strlen (s) + index;
  57.     *pos = '';
  58.     seed++;
  59.     for (t = seed; 0 <= --index; t >>= 3)
  60.      *--pos = '0' + (t & 07);
  61.     /* return name buffer */
  62.     return (s);
  63.     }