1 /*****************************************************************************
2 ** This is part of the CTSim program
3 ** Copyright (C) 1983-2000 Kevin Rosenberg
5 ** $Id: filefuncs.cpp,v 1.1 2000/06/19 02:58:08 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 ******************************************************************************/
35 fileBasename (const char* const filename)
37 const char* p = strrchr (filename, '/');
38 return (p ? p + 1 : filename);
43 * file_exists Checks if a specified disk fie exists
46 * exist = file_exists (fname)
47 * bool exist TRUE if specified file exists
51 file_exists (const char *fname)
56 if (strlen(fname) == 0)
58 else if ((fp = fopen(fname, "r")) == NULL)
68 /*-----------------------------------------------------------------------------
70 * FUNCTION IDENTIFICATION
72 * Name: sys_fopen Open a file for user
74 * Programmer: Kevin Rosenberg
77 * fp = sys_fopen (filename, mode, progname)
78 * FILE *fp Standard pointer to 'C' file
79 * char *filename Name of file to open
80 * If user enters a new name, it goes here
81 * char *mode Mode to open file (std. 'C')
82 * char *progname Name of program calling this routine
85 * This routine opens a file using the standard C fopen() routine. If
86 * the file is not found, the user is given to option to:
88 * 1 - Retry opening file with same name
89 * 2 - Enter new file name
90 * 3 - Abort and return to DOS
93 * If the the requested file is not found, the name of the file given
94 * entered at keyboard will be returned in filename. So, make sure there
95 * is room for a maximum length filename (MAXFULLNAME)
97 *---------------------------------------------------------------------------*/
100 sys_fopen (const char *filename, const char *mode, const char *progname)
103 char fname[256]; /* name used for call to fopen() */
104 char c; /* keyboard response */
106 strncpy (fname, filename, sizeof(fname));
109 if ((fp = fopen (fname, mode)) == NULL) {
111 cerr << "Can't open file " << fname << " [" << progname << "]" << endl;
112 cerr << "Enter: <R> - Retry | <N> - New name | <A> - Abort program --> ";
113 c = cio_kb_waitc ("RrNnAa", TRUE);
117 if (c == 'r') // Retry -- Nothing to do here
119 else if (c == 'a') // Abort -- Exit to OS
121 else if (c == 'n') { // New name - get from console
122 cerr << "Enter new file name -- ";
123 fgets (fname, sizeof(fname), stdin);
124 str_wrm_tail (fname);
128 } while (fp == NULL);