home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / gnat-2.06-src.tgz / tar.out / fsf / gnat / ada / a-cstrea.c < prev    next >
C/C++ Source or Header  |  1996-09-28  |  4KB  |  112 lines

  1. /****************************************************************************/
  2. /*                                                                          */
  3. /*                         GNAT RUN-TIME COMPONENTS                         */
  4. /*                                                                          */
  5. /*              Auxiliary C functions for Interfaces.C.Streams              */
  6. /*                                                                          */
  7. /*                                   Body                                   */
  8. /*                                                                          */
  9. /*                              $Revision: 1.13 $                           */
  10. /*                                                                          */
  11. /*               Copyright (c) 1995 NYU, All Rights Reserved                */
  12. /*                                                                          */
  13. /* The GNAT library is free software; you can redistribute it and/or modify */
  14. /* it under terms of the GNU Library General Public License as published by */
  15. /* the Free Software  Foundation; either version 2, or (at your option) any */
  16. /* later version.  The GNAT library is distributed in the hope that it will */
  17. /* be useful, but WITHOUT ANY WARRANTY;  without even  the implied warranty */
  18. /* of MERCHANTABILITY  or  FITNESS FOR  A PARTICULAR PURPOSE.  See the  GNU */
  19. /* Library  General  Public  License for  more  details.  You  should  have */
  20. /* received  a copy of the GNU  Library  General Public License  along with */
  21. /* the GNAT library;  see the file  COPYING.LIB.  If not, write to the Free */
  22. /* Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.        */
  23. /*                                                                          */
  24. /****************************************************************************/
  25.  
  26. /* Routines required for implementing routines in Interfaces.C.Streams */
  27.  
  28. #include "config.h"
  29. #include <sys/types.h>
  30. #include <sys/stat.h>
  31. #include <stdio.h>
  32.  
  33. #if defined (__EMX__) || defined (WINNT)
  34. #include <stdlib.h>
  35. int max_path_len = _MAX_PATH;
  36. #else
  37. #include <sys/param.h>
  38. int max_path_len = MAXPATHLEN;
  39. #endif
  40.  
  41. int feof__ (FILE *stream)
  42. {
  43.    return (feof (stream));
  44. }
  45.  
  46. int ferror__ (FILE *stream)
  47. {
  48.    return (ferror (stream));
  49. }
  50.  
  51. int fileno__ (FILE *stream)
  52. {
  53.    return (fileno (stream));
  54. }
  55.  
  56. int
  57. is_regular_file_fd (fd)
  58.      int fd;
  59. {
  60.   int ret;
  61.   struct stat statbuf;
  62.  
  63.   ret = fstat (fd, &statbuf);
  64.   return (!ret && S_ISREG (statbuf.st_mode));
  65. }
  66.  
  67. /* on some systems, the constants for seek are not defined, if so, then
  68.    provide the conventional definitions */
  69. #ifndef SEEK_SET
  70. #define SEEK_SET 0  /* Set file pointer to offset                           */
  71. #define SEEK_CUR 1  /* Set file pointer to its current value plus offset    */
  72. #define SEEK_END 2  /* Set file pointer to the size of the file plus offset */
  73. #endif
  74.  
  75. int    c_constant_eof      = EOF;
  76. int    c_constant_iofbf    = _IOFBF;
  77. int    c_constant_iolbf    = _IOLBF;
  78. int    c_constant_ionbf    = _IONBF;
  79. int    c_constant_seek_cur = SEEK_CUR;
  80. int    c_constant_seek_end = SEEK_END;
  81. int    c_constant_seek_set = SEEK_SET;
  82.  
  83. FILE*  c_constant_stderr () {return stderr;}
  84. FILE*  c_constant_stdin  () {return stdin;}
  85. FILE*  c_constant_stdout () {return stdout;}
  86.  
  87.  
  88. char *
  89. full_name (char *nam, char *buffer)
  90. {
  91.    char *p;
  92. #if defined (__EMX__) || defined (WINNT)
  93.    _fullpath (buffer, nam, max_path_len);
  94.    for (p = buffer; *p; p++) if (*p == '/') *p = '\\';
  95.  
  96. #else
  97. #if defined (MSDOS)
  98.    _fixpath (nam, buffer);
  99. #else
  100.    extern char *getcwd();
  101.    if (nam[0] != '/') {
  102.       buffer = getcwd (buffer, max_path_len);
  103.       strcat (buffer, "/");
  104.       strcat (buffer, nam);
  105.    }
  106.    else {
  107.       strcpy (buffer, nam);
  108.    }
  109. #endif
  110. #endif
  111. }
  112.