summaryrefslogtreecommitdiff
path: root/pr/src/md/windows/w16stdio.c
blob: b99e49220b935570b5b106bcefd585f877187543 (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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/*
 * The contents of this file are subject to the Netscape Public License
 * Version 1.1 (the "NPL"); you may not use this file except in
 * compliance with the NPL.  You may obtain a copy of the NPL at
 * http://www.mozilla.org/NPL/
 * 
 * Software distributed under the NPL is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
 * for the specific language governing rights and limitations under the
 * NPL.
 * 
 * The Initial Developer of this code under the NPL is Netscape
 * Communications Corporation.  Portions created by Netscape are
 * Copyright (C) 1998 Netscape Communications Corporation.  All Rights
 * Reserved.
 */
 
/*
** w16stdio.c -- Callback functions for Win16 stdio read/write.
**
**
*/
#include "primpl.h"

/*
** _PL_MDStdioWrite() -- Win16 hackery to get console output
**
** Returns: number of bytes written.
**
*/
PRInt32
_PL_W16StdioWrite( void *buf, PRInt32 amount )
{
    int   rc;
    
    rc = fputs( buf, stdout );
    if ( rc == EOF )
    {
        // something about errno
        return(PR_FAILURE);
    }
    return( strlen(buf));
} /* end _PL_fputs() */

/*
** _PL_W16StdioRead() -- Win16 hackery to get console input
**
*/
PRInt32
_PL_W16StdioRead( void *buf, PRInt32 amount )
{
    char *bp;

    bp = fgets( buf, (int) amount, stdin );
    if ( bp == NULL )
    {
        // something about errno
        return(PR_FAILURE);
    }
    
    return( strlen(buf));
} /* end _PL_fgets() */
/* --- end w16stdio.c --- */

/*
** Wrappers, linked into the client, that call
** functions in LibC
**
*/

/*
** _PL_W16CallBackPuts() -- Wrapper for puts()
**
*/
int PR_CALLBACK _PL_W16CallBackPuts( const char *outputString )
{
    return( puts( outputString ));
} /* end _PL_W16CallBackPuts()  */    

/*
** _PL_W16CallBackStrftime() -- Wrapper for strftime()
**
*/
size_t PR_CALLBACK _PL_W16CallBackStrftime( 
    char *s, 
    size_t len, 
    const char *fmt,
    const struct tm *p )
{
    return( strftime( s, len, fmt, p ));
} /* end _PL_W16CallBackStrftime()  */    

/*
** _PL_W16CallBackMalloc() -- Wrapper for malloc()
**
*/
void * PR_CALLBACK _PL_W16CallBackMalloc( size_t size )
{
    return( malloc( size ));
} /* end _PL_W16CallBackMalloc()  */    

/*
** _PL_W16CallBackCalloc() -- Wrapper for calloc()
**
*/
void * PR_CALLBACK _PL_W16CallBackCalloc( size_t n, size_t size )
{
    return( calloc( n, size ));
} /* end _PL_W16CallBackCalloc()  */    

/*
** _PL_W16CallBackRealloc() -- Wrapper for realloc()
**
*/
void * PR_CALLBACK _PL_W16CallBackRealloc( 
    void *old_blk, 
    size_t size )
{
    return( realloc( old_blk, size ));
} /* end _PL_W16CallBackRealloc()  */

/*
** _PL_W16CallBackFree() -- Wrapper for free()
**
*/
void PR_CALLBACK _PL_W16CallBackFree( void *ptr )
{
    free( ptr );
    return;
} /* end _PL_W16CallBackFree()  */

/*
** _PL_W16CallBackGetenv() -- Wrapper for getenv()
**
*/
void * PR_CALLBACK _PL_W16CallBackGetenv( const char *name )
{
    return( getenv( name ));
} /* end _PL_W16CallBackGetenv  */


/*
** _PL_W16CallBackPutenv() -- Wrapper for putenv()
**
*/
int PR_CALLBACK _PL_W16CallBackPutenv( const char *assoc )
{
    return( putenv( assoc ));
} /* end _PL_W16CallBackGetenv  */