[project @ 1999-11-09 00:40:11 by andy]
[ghc-hetmet.git] / ghc / interpreter / nHandle.c
1
2 /* This is a hack.  I totally deny writing it.  If this code breaks,
3  * you get to keep all the pieces.  JRS, 23 feb 99.
4  */
5
6 #include <stdio.h>
7 #include <errno.h>
8 #include <assert.h>
9 #include <malloc.h>
10 #include <stdlib.h>
11 #include <ctype.h>
12
13 int nh_stdin ( void )
14 {
15    errno = 0;
16    return (int)stdin;
17 }
18
19 int nh_stdout ( void )
20 {
21    errno = 0;
22    return (int)stdout;
23 }
24
25 int nh_stderr ( void )
26 {
27    errno = 0;
28    return (int)stderr;
29 }
30
31 int nh_open ( char* fname, int wr )
32 {
33    FILE* f;
34    errno = 0;
35    f = fopen ( fname, (wr==0) ? "r":  ((wr==1) ? "w" : "a") );
36    return (int)f;
37 }
38
39 void nh_close ( FILE* f )
40 {
41    errno = 0;
42    fflush ( f );
43    fclose ( f );
44 }
45
46 void nh_flush ( FILE* f )
47 {
48    errno = 0;
49    fflush ( f );
50 }
51
52 void nh_write ( FILE* f, int c )
53 {
54    errno = 0;
55    fputc(c,f);
56    if (f==stderr) { fflush(f); } 
57    if (f==stdout) { fflush(f); } 
58 }
59
60 int nh_read ( FILE* f )
61 {
62    errno = 0;
63    return fgetc(f);
64 }
65
66 int nh_errno ( void )
67 {
68    return errno;
69 }
70
71 int nh_malloc ( int n )
72 {
73    char* p = malloc(n);
74    return (int)p;
75 }
76
77 void nh_free ( int n )
78 {
79    free ( (char*)n );
80 }
81
82 void nh_store ( int p, int ch )
83 {
84    *(char*)p = (char)ch;
85 }
86
87 int nh_load ( int p )
88 {
89    return (int)(*(char*)p);
90 }
91
92 int nh_getenv ( int p )
93 {
94    return (int)getenv ( (const char *)p );
95 }
96
97 #if 0
98 int prog_argc;
99 char** prog_argv;
100
101 int nh_init_args ( int  argc, char *argv[] ) 
102 {
103   prog_argc = argc;
104   prog_argv = argv;
105 }
106
107 int nh_argc ( void )
108 {
109   return prog_argc;
110 }
111
112 int nh_argvb ( int argno, int offset )
113 {
114   return prog_argv[argno][offset];
115 }
116 #endif