home *** CD-ROM | disk | FTP | other *** search
-
- #include "doomdefs.h"
- #include "directory.h"
-
- /* Find the first byte of the "directory" and move 'fd' to it. */
- int set_directory(int fd) {
- four_byte dir_start;
- char magic[4];
-
- /* Check for IWAD or PWAD magic */
- if ( lseek(fd, 1, SEEK_SET) < 0 )
- return(-1);
- if ( read(fd, magic, 3) != 3 )
- return(-1);
- magic[3]='\0';
- if ( strcmp(magic, "WAD") != 0 )
- return(-1);
-
- /* Get the start of the directory from the WAD header */
- if ( lseek(fd, 8, SEEK_SET) < 0 )
- return(-1);
- read(fd, (char *)&dir_start, 4);
-
- /* Go to it! */
- if ( lseek(fd, dir_start, SEEK_SET) < 0 )
- return(-1);
- return(0);
- }
-
- int get_entry(int fd, char *name, dir_entry *entry) {
- while ( read(fd, (char *)entry, ENTRY_SIZE) == ENTRY_SIZE ) {
- /* Null terminate the name */
- entry->name[8]='\0';
- /* Is it the entry we want? */
- if ( strcasecmp(entry->name, name) == 0 )
- return(0);
- /* Have we reached the end of the entries? */
- if ( strcasecmp(WADDIR_END, entry->name) == 0 )
- break;
- }
- /* We didn't find the proper entry */
- return(-1);
- }
-