blob: 32d6f7378b8fe8aeebc4b975824b20a4b2bbe66e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
/* myopen.c */
#include <stdio.h>
#ifndef AIX
# include <stdlib.h>
#endif
#include <string.h>
#include "defines.h"
#include "myopen.h"
#include "mymalloc.h"
#include "myerror.h"
#ifdef __STDC__
FILE * my_open (char * file_name, char * extension , char * mode)
#else
FILE * my_open (file_name, extension, mode)
char * file_name, * extension, * mode;
#endif
{
char * tmp_file_name;
int i, lastext;
FILE * out_file;
tmp_file_name = (char *) my_malloc (sizeof (char)
* (strlen (file_name) + 5));
strcpy (tmp_file_name, file_name);
lastext = -1;
for (i = 0; tmp_file_name [i]; i ++)
if (tmp_file_name [i] == '.') lastext = i;
else
if (tmp_file_name [i] == '/') lastext = -1;
if (lastext == -1) strcat (tmp_file_name, extension);
if ((out_file = fopen (tmp_file_name, mode)) == NULL)
{
fprintf (stderr, "Cannot open %s for %s\n", tmp_file_name,
mode [0] == 'r' ? "reading" : "writing");
exit (UNSUCCESSFUL);
}
free (tmp_file_name);
return (out_file);
}
|