1 /*****************************************************************************
2 ** This is part of the CTSim program
3 ** Copyright (C) 1983-2000 Kevin Rosenberg
5 ** $Id: filefuncs.cpp,v 1.2 2000/06/19 19:04:05 kevin Exp $
7 ** Revision 1.1.1.1 2000/04/28 13:02:44 kevin
8 ** Initial CVS import for first public release
10 ** This program is free software; you can redistribute it and/or modify
11 ** it under the terms of the GNU General Public License (version 2) as
12 ** published by the Free Software Foundation.
14 ** This program is distributed in the hope that it will be useful,
15 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
16 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 ** GNU General Public License for more details.
19 ** You should have received a copy of the GNU General Public License
20 ** along with this program; if not, write to the Free Software
21 ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23 ******************************************************************************/
29 #include "ctsupport.h"
33 fileBasename (const char* const filename)
35 const char* p = strrchr (filename, '/');
36 return (p ? p + 1 : filename);
41 * file_exists Checks if a specified disk fie exists
44 * exist = file_exists (fname)
45 * bool exist TRUE if specified file exists
49 file_exists (const char *fname)
54 if (strlen(fname) == 0)
56 else if ((fp = fopen(fname, "r")) == NULL)
66 /*-----------------------------------------------------------------------------
68 * FUNCTION IDENTIFICATION
70 * Name: sys_fopen Open a file for user
72 * Programmer: Kevin Rosenberg
75 * fp = sys_fopen (filename, mode, progname)
76 * FILE *fp Standard pointer to 'C' file
77 * char *filename Name of file to open
78 * If user enters a new name, it goes here
79 * char *mode Mode to open file (std. 'C')
80 * char *progname Name of program calling this routine
83 * This routine opens a file using the standard C fopen() routine. If
84 * the file is not found, the user is given to option to:
86 * 1 - Retry opening file with same name
87 * 2 - Enter new file name
88 * 3 - Abort and return to DOS
91 * If the the requested file is not found, the name of the file given
92 * entered at keyboard will be returned in filename. So, make sure there
93 * is room for a maximum length filename (MAXFULLNAME)
95 *---------------------------------------------------------------------------*/
98 sys_fopen (const char *filename, const char *mode, const char *progname)
101 char fname[256]; /* name used for call to fopen() */
102 char c; /* keyboard response */
104 strncpy (fname, filename, sizeof(fname));
107 if ((fp = fopen (fname, mode)) == NULL) {
109 cerr << "Can't open file " << fname << " [" << progname << "]" << endl;
110 cerr << "Enter: <R> - Retry | <N> - New name | <A> - Abort program --> ";
111 c = cio_kb_waitc ("RrNnAa", TRUE);
115 if (c == 'r') // Retry -- Nothing to do here
117 else if (c == 'a') // Abort -- Exit to OS
119 else if (c == 'n') { // New name - get from console
120 cerr << "Enter new file name -- ";
121 fgets (fname, sizeof(fname), stdin);
122 str_wrm_tail (fname);
126 } while (fp == NULL);