summaryrefslogtreecommitdiff
path: root/fonts/utilities/ps2mf/myopen.c
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);
}