1/* cwd.c 2 Routines dealing with the current working directory. */ 3 4#include "uucp.h" 5 6#include "uudefs.h" 7#include "sysdep.h" 8#include "system.h" 9 10/* See whether running this file through zsysdep_add_cwd would require 11 knowing the current working directory. This is used to avoid 12 determining the cwd if it will not be needed. */ 13 14boolean 15fsysdep_needs_cwd (zfile) 16 const char *zfile; 17{ 18 return *zfile != '/' && *zfile != '~'; 19} 20 21/* Expand a local file, putting relative pathnames in the current 22 working directory. Note that ~/file is placed in the public 23 directory, rather than in the user's home directory. This is 24 consistent with other UUCP packages. */ 25 26char * 27zsysdep_local_file_cwd (zfile, zpubdir, pfbadname) 28 const char *zfile; 29 const char *zpubdir; 30 boolean *pfbadname; 31{ 32 if (pfbadname != NULL) 33 *pfbadname = FALSE; 34 if (*zfile == '/') 35 return zbufcpy (zfile); 36 else if (*zfile == '~') 37 return zsysdep_local_file (zfile, zpubdir, pfbadname); 38 else 39 return zsysdep_add_cwd (zfile); 40} 41 42/* Add the current working directory to a remote file name. */ 43 44char * 45zsysdep_add_cwd (zfile) 46 const char *zfile; 47{ 48 if (*zfile == '/' || *zfile == '~') 49 return zbufcpy (zfile); 50 51 if (zScwd == NULL) 52 { 53 ulog (LOG_ERROR, "Can't determine current directory"); 54 return NULL; 55 } 56 57 return zsysdep_in_dir (zScwd, zfile); 58} 59