This is search.c in view mode; [Download] [Up]
/* * The search routine takes a directory list, separated by PATHSEP, and * tries to open a file. Null directory components indicate current * directory. In an environment variable, null directory components * indicate substitution of the default path list at that point. */ #include "structures.h" /* The copyright notice in that file is included too! */ #include <kpathsea/tex-file.h> #include <kpathsea/tex-glyph.h> #define MAXPATHLEN (256) char name[MAXPATHLEN]; #define FATAL_PERROR(s) do { perror (s); exit (EXIT_FAILURE); } while (0) #define EXIT_FAILURE 1 /* * We hope MAXPATHLEN is enough -- only rudimentary checking is done! */ #ifdef SECURE extern Boolean secure; #endif #ifdef DEBUG extern integer debug_flag; #endif /* DEBUG */ extern char *mfmode ; extern int actualdpi ; #define mode "r" string Krealnameoffile ; FILE * search(format, file) kpse_file_format_type format; char *file ; { FILE *ret; string found_name; #ifdef SECURE /* This change suggested by maj@cl.cam.ac.uk to disallow reading of arbitrary files. */ if (secure && kpse_absolute_p (file)) return NULL; #endif /* Most file looked for through here must exist -- the exception is VF's. Bitmap fonts go through pksearch. */ found_name = kpse_find_file (file, format, format != vfpath); if (found_name) { strcpy (name, found_name); ret = fopen (name, mode); if (!ret) FATAL_PERROR (name); Krealnameoffile = name; } else ret = NULL; return ret; } /* end search */ FILE * pksearch(path, file, name_ret, dpi, dpi_ret) char *path, *file ; char **name_ret ; halfword dpi; int *dpi_ret ; { FILE *ret; kpse_glyph_file_type font_file; string found_name = kpse_find_pk (file, dpi, &font_file); if (found_name) { strcpy (name, found_name); ret = fopen (name, mode); if (!ret) FATAL_PERROR (name); Krealnameoffile = name; *name_ret = font_file.name; *dpi_ret = font_file.dpi; } else ret = NULL; return ret; } /* end search */ /* do we report file openings? */
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.