'Watcom C Reference/D - E - F'에 해당되는 글 20건

  1. 2021.06.27 Watcom C Library : fstat, ftell, ftime, _fullpath, fwrite

 

 

Watcom C Library Reference : fstat, ftell, ftime, _fullpath, fwrite

 

 

 

 

fstat

 

Synopsis : #include <sys\types.h> 

              #include <sys\stat.h>

              int fstat( int handle, struct stat *buf );

 


Description : The fstat function obtains information about an open file whose file handle is handle. This information is placed in the structure located at the address indicated by buf.


The file <sys\stat.h> contains definitions for the structure stat.
    struct stat {
        dev_t     st_dev;          /* disk drive file resides on   */

        ino_t      st_ino;          /* this inode's number         */

        unsigned short st_mode;  /* file mode                    */

        short      st_nlink;        /* # of hard links               */

        short      st_uid;          /* user-id, always 'root'       */

        short      st-gid;          /* group-id, always 'root'     */

        dev_t     st_rdev;         /* drive #, same as st_dev    */

        off_t      st_size;          /* total file size                */

        time_t     st_atime;        /* time of last access         */

        time_t     st_mtime;       /* time of last modification    */

        time_t     st_ctime;        /* time of last status change  */

    };


At least the following macros are defined in the <sys\stat.h> header file.

 Macro  Meaning
 S_ISFIFO(m)  Test for FIFO.
 S_ISCHR(m)  Test for character special file.
 S_ISDIR(m)  Test for directory file.
 S_ISBLK(m)  Test for block special file.
 S_ISREG(m)  Test for regular file.

 

The value m supplied to the macros is the value of the st_mode field of a stat structure. The macro evaluates to a non-zero value if the test is true and zero if the test is false.

 

The following bits are encoded within the st_mode field of a stat structure.

 Mask  Owner Permissions
 S_IRWXU  Read, write, search (if a directory), or execute (otherwise)
 S_IRUSR  Read permission bit
 S_IWUSR  Write permission bit
 S_IXUSR  Search/execute permission bit
 S_IREAD  == S_IRUSR (for Microsoft compatibility)
 S_IWRITE  == S_IWUSR (for Microsoft compatibility)
 S_IEXEC  == S_IXUSR (for Microsoft compatibility)

 

S_IRWXU is the bitwise inclusive OR of S_IRUSR, S_IWUSR, and S_IXUSR.

 

 Mask  Group Permissions (same as owner's on DOS, OS/2 or Window NT)
 S_IRWXG  Read, write, search (if a directory), or execute (otherwise)
 S_IRGRP  Read permission bit
 S_IWGRP  Write permission bit
 S_IXGRP  Search/execute permission bit

 

S_IRWXG is the bitwise inclusive OR of S_IRGRPS_IWGRP, and S_IXGRP.

 

 Mask  Other Permissions (same as owner's on DOS, OS/2 or Windows NT)
 S_IRWXO  Read, write, search (if a directory), or execute (otherwise)
 S_IROTH  Read permission bit
 S_IWOTH  Write permission bit
 S_IXOTH  Search/execute permission bit

 

S_IRWXO is the bitwise inclusive OR of S_IROTH, S_IWOTH, and S_IXOTH.

 

 Mask  Meaning
 S_ISUID  (Not supported by DOS, OS/2 or Windows NT) Set user ID on execution. The process's effective user ID shall be set to that of the owner of the file when the file is run as a program. On a regular file, this bit should be cleared on any write. 
 S_ISGID  (Not supported by DOS, OS/2 or Windows NT) Set group ID on execution. Set effective group ID on the process to the file's group when the file is run as a program. On a regular file, this bit should be cleared on any write.

 

 

 

Returns : The fstat function returns zero when the information is successfully obtained. Otherwise, -1 is returned.

 

 

Errors : When an error has occurred, errno contains a value indicating the type of error that has been detected.

 

 Constant  Meaning
 EBADF  The handle argument is not a valid file handle.

 


See Also : creat, dup, dup2, open, sopen, stat

 


Example :

#include <stdio.h> 

#include <sys\types.h> 

#include <sys\stat.h> 

#include <fcntl.h> 

#include <io.h>


void main( )

{
    int      handle, rc;

    struct  stat buf;

 

    handle = open( "file", O_RDONLY );

    if( handle != -1 ) {
        rc = fstat ( handle, &buf );

        if( rc != -1 )
            printf( "File size = %d\n", buf.st_size );

        close( handle );

    }

}

 

Classification : POSIX 1003.1
Systems : All

 

 

 

 

 

ftell

 

Synopsis : #include <stdio.h> 

              long int ftell( FILE *fp );


Description : The ftell function returns the current read/write position of the file specified by fp. This position defines the character that will be read or written by the next I/O operation on the file. The value returned by ftell can be used in a subsequent call to fseek to set the file to the same position.

 

 

Returns : The ftell function returns the current read/write position of the file specified by fp. When an error is detected, -1L is returned. When an error has occurred, errno contains a value indicating the type of error that has been detected.

 

 

See Also : fgetpos, fopen, fsetpos, fseek

 


Example :

#include <stdio.h>


long int filesize( FILE *fp )

{
    long int     save_pos, size_of_file;


    save_pos = ftell( fp );

    fseek( fp, 0L, SEEK_END );

    size_of_file = ftell( fp );

    fseek ( fp, save_pos, SEEK_SET );

    return( size_of_file );

}

 


void main( )

{
    FILE     *fp;

   

    fp = fopen( "file", "r" );

    if( fp != NULL) {
        printf( "File size=%d\n", filesize( fp ) ) ;

        fclose( fp );

    }

}

 

Classification : ANSI
Systems : All

 

 

 

 

 

ftime

 

Synopsis : #include <sys\timeb.h> 

              int ftime( struct timeb *timeptr );

 

              struct timeb {

                      time_t time;               /* time in seconds since Jan 1, 1970 UTC */

                      unsigned short millitm;    /* milliseconds */

                      short timezone;           /* difference in minutes from UTC */

                      short dstflag;              /* nonzero if in daylight savings time */
              }; 

 


Description : The ftime function gets the current time and stores it in the structure pointed to by timeptr.

 

 

Returns : The ftime function fills in the fields of the structure pointed to by timeptr. The ftime function returns -1 if not successful, and a non-zero value otherwise.

 

 

See Also : asctime, clock, ctime, difftime, gmtime, localtime, mktime, strftime, time, tzset

 


Example :

#include <stdio.h> 

#include <time.h> 

#include <sys\timeb.h>


void main( )

{
    struct timeb timebuf;

    char   *tod;


    ftime( &timebuf );

    tod = ctime ( &timebuf.time );

    printf( "The time is %19s %hu %s", tod, timebuf.millitm, &tod[20] );

}

 


produces the following :
The time is Tue Dec 25 15:58:42.870 1999

 

Classification : WATCOM
Systems : All

 

 

 

 

 

_fullpath

 

Synopsis : #include <stdlib.h> 

              char *_fullpath( char *buffer, const char *path, size_t size );

 


Description : The _fullpath function returns the full pathname of the file specification in path in the specified buffer buffer of length size.

 

The maximum size that might be required for buffer is _MAX_PATH. If the buffer provide is too small, NULL is returned and errno is set.


If buffer is NULL then a buffer of size _MAX_PATH is allocated using malloc. This buffer may be freed using the free function.


If path is NULL or points to a null string ("") then the current working directory is returned in buffer.

 

 

 

Returns : The _fullpath function returns a pointer to the full path specification if no error occurred. Otherwise, NULL is returned.

 

 

Errors : When an error has occurred, errno contains a value indicating the type of error that has been detected.

 Constant  Meaning
 ENOENT  The current working directory could not be obtained.
 ENOMEM  The buffer could not be allocated.
 ERANGE  The buffer passed was too small.

 

 

See Also : _makepath, _splitpath

 


Example :

#include <stdio.h> 

#include <stdlib.h>


void main( int argc, char *argv[ ] )

{
    int     i;

    char   buff[ PATH_MAX ];


    for ( i = 1; i < argc; ++i ) {
        puts ( argv[i] );

        if( _fullpath( buff, argv[i], PATH_MAX ) ) {
            puts ( buff );

        } else {
            puts ( "FAIL!" );

        }

    }

}

 

Classification : WATCOM
Systems : All

 

 

 

 

 

fwrite

 

Synopsis : #include <stdio.h> 

              size_t fwrite( const void *buf, size_t elsize, size_t nelem, FILE *fp );

 


Description : The fwrite function writes nelem elements of elsize bytes each to the file specified by fp.

 

 

Returns : The fwrite function returns the number of complete elements successfully written. This value will be less than the requested number of elements only if a write error occurs. When an error has occurred, errno contains a value indicating the type of error that has been detected.

 

 

See Also : ferror, fopen

 


Example :

#include <stdio.h>


struct student_data {
    int             student_id;
    unsigned char marks[10]; };

};

 


void main( )

{
    int       i;

   FILE    *fp;

    struct student_data std;

 

    fp = fopen( "file", "w" );

    if( fp != NULL ) {
        std.student_id = 1001;

        for( i = 0; i < 10; i++) {
            std.marks[ i ] = ( unsigned char) (85 + i);

        }

 

        /* write student record with marks */

        i = fwrite( &std, sizeof( std ), 1, fp );

        printf( "%d record written\n", i );

        fclose(fp);

    }

}

 

Classification : ANSI
Systems : All

 

 

 

 

 

 

 

 

This manual describes the WATCOM C library for DOS, Windows, and OS/2, It includes the Standard C Library (as defined in the ANSI C Standard).

 

WATCOM C Language Reference manual describes the ANSI C Programming language and extensions to it which are supported by WATCOM C/C++ (32bit)

 

 

 

728x90
반응형
Posted by 전화카드
,