--- bin/megatron/nad.c.orig Sat Feb 17 09:40:32 1996 +++ bin/megatron/nad.c Thu Nov 11 17:45:21 1999 @@ -11,7 +11,8 @@ #include #include #include -#include +#include +#include #include #include #include @@ -22,6 +23,8 @@ static char hexdig[] = "0123456789abcdef"; +int nad_header_read(), nad_header_write(); + char *mtoupath( mpath ) char *mpath; { @@ -61,6 +64,7 @@ struct adouble ad; } nad; +int nad_open( path, openflags, fh ) char *path; int openflags; @@ -76,9 +80,10 @@ */ if ( openflags == O_RDONLY ) { - strcpy( nad.adpath[0], path ); - strcpy( nad.adpath[1], - ad_path( nad.adpath[0], ADFLAGS_DF|ADFLAGS_HF )); + (void)strlcpy( nad.adpath[0], path, sizeof (nad.adpath[0]) ); + (void)strlcpy( nad.adpath[1], + ad_path( nad.adpath[0], ADFLAGS_DF|ADFLAGS_HF ), + sizeof(nad.adpath[1])); for ( fork = 0 ; fork < NUMFORKS ; fork++ ) { if ( stat( nad.adpath[ fork ], &st ) < 0 ) { if ( errno == ENOENT ) { @@ -102,10 +107,12 @@ return( nad_header_read( fh )); } else { - strcpy( nad.macname, fh->name ); - strcpy( nad.adpath[0], mtoupath( nad.macname )); - strcpy( nad.adpath[1], - ad_path( nad.adpath[0], ADFLAGS_DF|ADFLAGS_HF )); + (void)strlcpy( nad.macname, fh->name, sizeof(nad.macname) ); + (void)strlcpy( nad.adpath[0], mtoupath( nad.macname ), + sizeof(nad.adpath[0])); + (void)strlcpy( nad.adpath[1], + ad_path( nad.adpath[0], ADFLAGS_DF|ADFLAGS_HF ), + sizeof(nad.adpath[0])); #if DEBUG fprintf(stderr, "%s\n", nad.macname); fprintf(stderr, "%s is adpath[0]\n", nad.adpath[0]); @@ -125,16 +132,17 @@ } } +int nad_header_read( fh ) struct FHeader *fh; { - long temptime; + int32_t temptime; struct stat st; - bcopy( ad_entry( &nad.ad, ADEID_NAME ), nad.macname, + memcpy( nad.macname, ad_entry( &nad.ad, ADEID_NAME ), ad_getentrylen( &nad.ad, ADEID_NAME )); nad.macname[ ad_getentrylen( &nad.ad, ADEID_NAME ) ] = '\0'; - strcpy( fh->name, nad.macname ); + (void)strlcpy( fh->name, nad.macname, sizeof(fh->name) ); if ( stat( nad.adpath[ DATA ], &st ) < 0 ) { perror( "stat of datafork failed" ); return( -1 ); @@ -153,51 +161,51 @@ fprintf( stderr, "get info comment\t\t\"%s\"\n", fh->comment ); #endif - bcopy(( ad_entry( &nad.ad, ADEID_FILEI ) + FILEIOFF_CREATE ), &temptime, + memcpy( &temptime, (ad_entry( &nad.ad, ADEID_FILEI ) + FILEIOFF_CREATE ), sizeof( temptime )); temptime = htonl( ntohl( temptime ) + TIME_DIFF ); - bcopy( &temptime, &fh->create_date, sizeof( temptime )); - bcopy(( ad_entry( &nad.ad, ADEID_FILEI ) + FILEIOFF_MODIFY ), &temptime, + memcpy( &fh->create_date, &temptime, sizeof( temptime )); + memcpy( &temptime, (ad_entry( &nad.ad, ADEID_FILEI ) + FILEIOFF_MODIFY ), sizeof( temptime )); temptime = htonl( ntohl( temptime ) + TIME_DIFF ); - bcopy( &temptime, &fh->mod_date, sizeof( temptime )); - bcopy(( ad_entry( &nad.ad, ADEID_FILEI ) + FILEIOFF_BACKUP ), &temptime, + memcpy( &fh->mod_date, &temptime, sizeof( temptime )); + memcpy( &temptime, (ad_entry( &nad.ad, ADEID_FILEI ) + FILEIOFF_BACKUP ), sizeof( temptime )); temptime = htonl( ntohl( temptime ) + TIME_DIFF ); - bcopy( &temptime, &fh->backup_date, sizeof( temptime )); + memcpy( &fh->backup_date, &temptime, sizeof( temptime )); #if DEBUG - bcopy( &fh->create_date, &temptime, sizeof( temptime )); + memcpy( &temptime, &fh->create_date, sizeof( temptime )); temptime = ntohl( temptime ); fprintf( stderr, "create_date seconds\t\t%lu\n", temptime ); - bcopy( &fh->mod_date, &temptime, sizeof( temptime )); + memcpy( &temptime, &fh->mod_date, sizeof( temptime )); temptime = ntohl( temptime ); fprintf( stderr, "mod_date seconds\t\t%lu\n", temptime ); - bcopy( &fh->backup_date, &temptime, sizeof( temptime )); + memcpy( &temptime, &fh->backup_date, sizeof( temptime )); temptime = ntohl( temptime ); fprintf( stderr, "backup_date seconds\t\t%lu\n", temptime ); fprintf( stderr, "size of finder_info\t\t%d\n", sizeof( fh->finder_info )); #endif - bcopy(( ad_entry( &nad.ad, ADEID_FINDERI ) + FINDERIOFF_TYPE ), - (char *)&fh->finder_info.fdType, + memcpy( (char *)&fh->finder_info.fdType, + (ad_entry( &nad.ad, ADEID_FINDERI ) + FINDERIOFF_TYPE ), sizeof( fh->finder_info.fdType )); - bcopy(( ad_entry( &nad.ad, ADEID_FINDERI ) + FINDERIOFF_CREATOR ), - (char *)&fh->finder_info.fdCreator, + memcpy( (char *)&fh->finder_info.fdCreator, + (ad_entry( &nad.ad, ADEID_FINDERI ) + FINDERIOFF_CREATOR ), sizeof( fh->finder_info.fdCreator )); - bcopy(( ad_entry( &nad.ad, ADEID_FINDERI ) + FINDERIOFF_FLAGS ), - (char *)&fh->finder_info.fdFlags, + memcpy( (char *)&fh->finder_info.fdFlags, + (ad_entry( &nad.ad, ADEID_FINDERI ) + FINDERIOFF_FLAGS ), sizeof( fh->finder_info.fdFlags )); - bcopy(( ad_entry( &nad.ad, ADEID_FINDERI ) + FINDERIOFF_LOC ), - (char *)&fh->finder_info.fdLocation, + memcpy( (char *)&fh->finder_info.fdLocation, + (ad_entry( &nad.ad, ADEID_FINDERI ) + FINDERIOFF_LOC ), sizeof( fh->finder_info.fdLocation )); - bcopy(( ad_entry( &nad.ad, ADEID_FINDERI ) + FINDERIOFF_FLDR ), - (char *)&fh->finder_info.fdFldr, + memcpy( (char *)&fh->finder_info.fdFldr, + (ad_entry( &nad.ad, ADEID_FINDERI ) + FINDERIOFF_FLDR ), sizeof( fh->finder_info.fdFldr )); #if DEBUG { - short flags; + int16_t flags; fprintf( stderr, "finder_info.fdType\t\t%.*s\n", sizeof( fh->finder_info.fdType ), &fh->finder_info.fdType ); fprintf( stderr, "finder_info.fdCreator\t\t%.*s\n", @@ -207,9 +215,9 @@ sizeof( fh->finder_info.fdType ) + sizeof( fh->finder_info.fdCreator ), ad_entry( &nad.ad, ADEID_FINDERI )); - bcopy(( ad_entry( &nad.ad, ADEID_FINDERI ) + + memcpy( &flags, (ad_entry( &nad.ad, ADEID_FINDERI ) + sizeof( fh->finder_info.fdType ) + - sizeof( fh->finder_info.fdCreator ) ), &flags, sizeof( flags )); + sizeof( fh->finder_info.fdCreator ) ), sizeof( flags )); fprintf( stderr, "nad.ad flags\t\t\t%x\n", flags ); fprintf( stderr, "fh flags\t\t\t%x\n", fh->finder_info.fdFlags ); } @@ -221,13 +229,14 @@ } +int nad_header_write( fh ) struct FHeader *fh; { - long temptime; + int32_t temptime; ad_setentrylen( &nad.ad, ADEID_NAME, strlen( nad.macname )); - bcopy( nad.macname, ad_entry( &nad.ad, ADEID_NAME ), + memcpy( ad_entry( &nad.ad, ADEID_NAME ), nad.macname, ad_getentrylen( &nad.ad, ADEID_NAME )); ad_setentrylen( &nad.ad, ADEID_RFORK, ntohl( fh->forklen[ RESOURCE ] )); @@ -244,46 +253,46 @@ ad_entry( &nad.ad, ADEID_NAME )); #endif - bcopy( &fh->create_date, &temptime, sizeof( temptime )); + memcpy( &temptime, &fh->create_date, sizeof( temptime )); temptime = htonl( ntohl( temptime ) - TIME_DIFF ); - bcopy( &temptime, ( ad_entry( &nad.ad, ADEID_FILEI ) + FILEIOFF_CREATE ), - sizeof( temptime )); - bcopy( &fh->mod_date, &temptime, sizeof( temptime )); + memcpy( ( ad_entry( &nad.ad, ADEID_FILEI ) + FILEIOFF_CREATE ), + &temptime, sizeof( temptime )); + memcpy( &temptime, &fh->mod_date, sizeof( temptime )); temptime = htonl( ntohl( temptime ) - TIME_DIFF ); - bcopy( &temptime, ( ad_entry( &nad.ad, ADEID_FILEI ) + FILEIOFF_MODIFY ), - sizeof( temptime )); + memcpy( ( ad_entry( &nad.ad, ADEID_FILEI ) + FILEIOFF_MODIFY ), + &temptime, sizeof( temptime )); #if DEBUG - bcopy(( ad_entry( &nad.ad, ADEID_FILEI ) + FILEIOFF_CREATE ), - &temptime, sizeof( temptime )); + memcpy( &temptime, ( ad_entry( &nad.ad, ADEID_FILEI ) + FILEIOFF_CREATE ), + sizeof( temptime )); temptime = ntohl( temptime ); fprintf(stderr, "FILEIOFF_CREATE seconds\t\t%ld\n", temptime ); - bcopy(( ad_entry( &nad.ad, ADEID_FILEI ) + FILEIOFF_MODIFY ), - &temptime, sizeof( temptime )); + memcpy( &temptime, ( ad_entry( &nad.ad, ADEID_FILEI ) + FILEIOFF_MODIFY ), + sizeof( temptime )); temptime = ntohl( temptime ); fprintf(stderr, "FILEIOFF_MODIFY seconds\t\t%ld\n", temptime ); #endif - bzero( ad_entry( &nad.ad, ADEID_FINDERI ), ADEDLEN_FINDERI ); - bcopy( (char *)&fh->finder_info.fdType, - ad_entry( &nad.ad, ADEID_FINDERI ), + memset( ad_entry( &nad.ad, ADEID_FINDERI ), 0, ADEDLEN_FINDERI ); + memcpy( ad_entry( &nad.ad, ADEID_FINDERI ), + (char *)&fh->finder_info.fdType, sizeof( fh->finder_info.fdType )); - bcopy( (char *)&fh->finder_info.fdCreator, - ad_entry( &nad.ad, ADEID_FINDERI ) + - sizeof( fh->finder_info.fdType ), + memcpy( ad_entry( &nad.ad, ADEID_FINDERI ) + + sizeof( fh->finder_info.fdType ), + (char *)&fh->finder_info.fdCreator, sizeof( fh->finder_info.fdCreator )); - bcopy( (char *)&fh->finder_info.fdFlags, - ad_entry( &nad.ad, ADEID_FINDERI ) + - sizeof( fh->finder_info.fdType ) + - sizeof( fh->finder_info.fdCreator ), + memcpy( ad_entry( &nad.ad, ADEID_FINDERI ) + + sizeof( fh->finder_info.fdType ) + + sizeof( fh->finder_info.fdCreator ), + (char *)&fh->finder_info.fdFlags, sizeof( fh->finder_info.fdFlags )); #if DEBUG { - short flags; - bcopy(( ad_entry( &nad.ad, ADEID_FINDERI ) + + int16_t flags; + memcpy(( &flags, ad_entry( &nad.ad, ADEID_FINDERI ) + sizeof( fh->finder_info.fdType ) + - sizeof( fh->finder_info.fdCreator ) ), &flags, sizeof( flags )); + sizeof( fh->finder_info.fdCreator ) ), sizeof( flags )); fprintf( stderr, "nad.ad flags\t\t\t%x\n", flags ); fprintf( stderr, "fh flags\t\t\t%x\n", fh->finder_info.fdFlags ); fprintf( stderr, "type and creator\t\t%.*s\n\n", @@ -306,6 +315,7 @@ int forkeid[] = { ADEID_DFORK, ADEID_RFORK }; +int nad_read( fork, forkbuf, bufc ) int fork; char *forkbuf; @@ -331,6 +341,7 @@ return( cc ); } +int nad_write( fork, forkbuf, bufc ) int fork; char *forkbuf; @@ -366,6 +377,7 @@ return( bufc ); } +int nad_close( status ) int status; { @@ -387,5 +399,6 @@ perror ( nad.adpath[ 1 ] ); } return( 0 ); - } else return( -1 ); + } + return( -1 ); }