Annotation of researchv9/jerq/sgs/strip/copytmp.c, revision 1.1

1.1     ! root        1: /* UNIX HEADER */
        !             2: #include       <stdio.h>
        !             3: 
        !             4: /* COMMON SGS HEADERS */
        !             5: #include       "filehdr.h"
        !             6: #include       "ldfcn.h"
        !             7: /* STRIP HEADER */
        !             8: #include       "defs.h"
        !             9: 
        !            10: 
        !            11:     /*  copytmp(filename, filehead)
        !            12:      *
        !            13:      *  copies file header in filehead back to original file and
        !            14:      *  copies the rest of the stripped file from temporary back to original
        !            15:      *
        !            16:      *  calls:
        !            17:      *      - ignorsig( ) to turn off interrupts while recreating original file
        !            18:      *      - resetsig( ) to turn signals back on after recreating original
        !            19:      *      - error(file, string, level) if it cannot recreate original
        !            20:      *
        !            21:      *  returns SUCCESS or FAILURE
        !            22:      */
        !            23: 
        !            24: 
        !            25: int
        !            26: copytmp(filename, filehead)
        !            27: 
        !            28: char   *filename;
        !            29: FILHDR *filehead;
        !            30: 
        !            31: {
        !            32:     /* UNIX FUNCTIONS CALLED */
        !            33:     extern int fread( ),
        !            34:                fwrite( );
        !            35: 
        !            36:     /* STRIP FUNCTIONS CALLED */
        !            37:     extern     ignorsig( ),
        !            38:                resetsig( ),
        !            39:                error( );
        !            40: 
        !            41:     /* EXTERNAL VARIABLES USED */
        !            42:     extern FILE        *strp1,
        !            43:                *strp2,
        !            44:                *stripout;
        !            45: #if FLEXNAMES
        !            46:        extern  long    string_size;
        !            47:        extern  char    tmpnam5[];
        !            48: #endif
        !            49: 
        !            50:     /* LOCAL VARIABLES */
        !            51:     char       buffer[BUFSIZ];
        !            52:     int                nitems;
        !            53: #if FLEXNAMES
        !            54:        FILE    *tmpfile;
        !            55: #endif
        !            56: 
        !            57: 
        !            58:     ignorsig( );
        !            59: 
        !            60:     if (fwrite(filehead, FILHSZ, 1, stripout) != 1) {
        !            61:        error(filename, "cannot recreate fileheader", 5);
        !            62:        resetsig( );
        !            63:        return(FAILURE);
        !            64:     }
        !            65: 
        !            66:     while ((nitems = fread(buffer, sizeof (char), BUFSIZ, strp1)) != 0) {
        !            67:        if (fwrite(buffer, sizeof (char), nitems, stripout) != nitems) {
        !            68:            error(filename, "cannot recreate stripped file<tmp1>", 5);
        !            69:            resetsig( );
        !            70:            return(FAILURE);
        !            71:        }
        !            72:     }
        !            73:     while ((nitems = fread(buffer, sizeof (char), BUFSIZ, strp2)) != 0) {
        !            74:        if (fwrite(buffer, sizeof (char), nitems, stripout) != nitems) {
        !            75:            error(filename, "cannot recreate stripped file<tmp2>", 5);
        !            76:            resetsig( );
        !            77:            return(FAILURE);
        !            78:        }
        !            79:     }
        !            80: 
        !            81: #if FLEXNAMES
        !            82:        if (string_size > 0L)
        !            83:        {
        !            84:                if ((tmpfile = fopen( tmpnam5, "r" )) == NULL)
        !            85:                {
        !            86:                        fprintf( stderr, "cannot read temp file" );
        !            87:                        resetsig( );
        !            88:                        return( FAILURE );
        !            89:                }
        !            90: 
        !            91:                if (fwrite( &string_size, sizeof( long ), 1, stripout ) != 1)
        !            92:                {
        !            93:                        error( filename, "cannot recreate stripped file", 5 );
        !            94:                        resetsig( );
        !            95:                        return( FAILURE );
        !            96:                }
        !            97: 
        !            98:                while ((nitems = fread( buffer, sizeof( char ), BUFSIZ, tmpfile)) != 0)
        !            99:                        if (fwrite( buffer, sizeof( char ), nitems, stripout ) != nitems)
        !           100:                        {
        !           101:                                error( filename, "cannot recreate stripped file", 5 );
        !           102:                                resetsig( );
        !           103:                                return( FAILURE );
        !           104:                        }
        !           105: 
        !           106:                fclose( tmpfile );
        !           107:        }
        !           108: #endif
        !           109: 
        !           110:     resetsig( );
        !           111:     return(SUCCESS);
        !           112: }
        !           113: /*
        !           114:  *     static char ID[] = "@(#) copytmp.c: 1.4 3/3/83";
        !           115:  */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.