]> sjero.net Git - wget/blob - msdos/msdos.c
Fix build when libpsl is not available
[wget] / msdos / msdos.c
1 /* MSDOS utility functions.
2    Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc.
3
4 This file is part of GNU Wget.
5
6 GNU Wget is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 3 of the License, or
9 (at your option) any later version.
10
11 GNU Wget is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with Wget.  If not, see <http://www.gnu.org/licenses/>.
18
19 Additional permission under GNU GPL version 3 section 7
20
21 If you modify this program, or any covered work, by linking or
22 combining it with the OpenSSL project's OpenSSL library (or a
23 modified version of that library), containing parts covered by the
24 terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
25 grants you additional permission to convey the resulting work.
26 Corresponding Source for a non-source form of such a combination
27 shall include the source code for the parts of OpenSSL used as well
28 as that of the covered work.  */
29
30 #include "wget.h"
31
32 #include <stdio.h>
33 #include <stdlib.h>
34 #include <string.h>
35 #include <conio.h>
36
37 /* This variable (i.e. MB_CUR_MAX) is set here so that we force a unibyte
38    locale in ../lib/quotearg.c. */
39 #ifdef __DJGPP__
40 int __dj_mb_cur_max = 1;
41 #endif
42
43 #ifndef __WATCOMC__
44 /* These is just a dummy function to make Wget link. These are never called
45    because 'unibyte_locale == 1' in ../lib/quotearg.c. */
46 int mbsinit (void)
47 {
48   return 0;
49 }
50
51 int mbrtowc (void)
52 {
53   return 0;
54 }
55
56 int iswprint (void)
57 {
58   return 0;
59 }
60 #endif   /* __WATCOMC__ */
61
62
63 #define PASS_MAX 512
64
65 /* Get a user string with echo off. Handy for entering passwords. The prompt
66    optional. */
67 char *
68 getpass (const char *prompt)
69 {
70   char getpassbuf[PASS_MAX + 1];
71   size_t i = 0;
72   int c;
73
74   if (prompt)
75     {
76       fputs (prompt, stderr);
77       fflush (stderr);
78     }
79
80   for (;;)
81     {
82       c = getch ();
83       if (c == '\r')
84         {
85           getpassbuf[i] = '\0';
86           break;
87         }
88       else if (i < PASS_MAX)
89         {
90           getpassbuf[i++] = c;
91         }
92
93       if (i >= PASS_MAX)
94         {
95           getpassbuf[i] = '\0';
96           break;
97         }
98     }
99
100   if (prompt)
101     {
102       fputs ("\r\n", stderr);
103       fflush (stderr);
104     }
105
106   return strdup (getpassbuf);
107 }
108