ReactOS 0.4.15-dev-7711-g5627da4
main.c
Go to the documentation of this file.
1/*
2 * Copyright (c) 1985, 1989 Regents of the University of California.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms are permitted
6 * provided that the above copyright notice and this paragraph are
7 * duplicated in all such forms and that any documentation,
8 * advertising materials, and other materials related to such
9 * distribution and use acknowledge that the software was developed
10 * by the University of California, Berkeley. The name of the
11 * University may not be used to endorse or promote products derived
12 * from this software without specific prior written permission.
13 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
14 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
15 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
16 */
17
18/*
19 * FTP User Program -- Command Interface.
20 */
21
22#include "precomp.h"
23
24#include <fcntl.h>
25
26#ifndef lint
27char copyright[] =
28"@(#) Copyright (c) 1985, 1989 Regents of the University of California.\n\
29 All rights reserved.\n";
30#endif /* not lint */
31
32#ifndef lint
33static char sccsid[] = "@(#)main.c based on 5.13 (Berkeley) 3/14/89";
34#endif /* not lint */
35
36#if defined(sun) && !defined(FD_SET)
37typedef int uid_t;
38#endif
39
40uid_t getuid(void);
41void intr(void);
42void lostpeer(void);
43char *getlogin(void);
44
45short portnum;
46
47char home[128];
48char *globerr;
50
51
52
53/* Lot's of options... */
54/*
55 * Options and other state info.
56 */
57int trace; /* trace packets exchanged */
58int hash; /* print # for each buffer transferred */
59//int sendport; /* use PORT cmd for each data connection */
60int verbose; /* print messages coming back from server */
61int connected; /* connected to server */
62int fromatty; /* input is from a terminal */
63int interactive; /* interactively prompt on m* cmds */
64int debug; /* debugging level */
65int bell; /* ring bell on cmd completion */
66int doglob; /* glob local file names */
67int proxy; /* proxy server connection active */
69int proxflag; /* proxy connection exists */
70int sunique; /* store files on server with unique name */
71int runique; /* store local files with unique name */
72int mcase; /* map upper to lower case for mget names */
73int ntflag; /* use ntin ntout tables for name translation */
74int mapflag; /* use mapin mapout templates on file names */
75int code; /* return/reply code for ftp command */
76int crflag; /* if 1, strip car. rets. on ascii gets */
77char pasv[64]; /* passive port for proxy data connection */
78char *altarg; /* argv[1] with no shell-like preprocessing */
79char ntin[17]; /* input translation table */
80char ntout[17]; /* output translation table */
81// #include <sys/param.h>
82char mapin[MAXPATHLEN]; /* input map template */
83char mapout[MAXPATHLEN]; /* output map template */
84char typename[32]; /* name of file transfer type */
85int type; /* file transfer type */
86char structname[32]; /* name of file transfer structure */
87int stru; /* file transfer structure */
88char formname[32]; /* name of file transfer format */
89int form; /* file transfer format */
90char modename[32]; /* name of file transfer mode */
91int mode; /* file transfer mode */
92char bytename[32]; /* local byte size in ascii */
93int bytesize; /* local byte size in binary */
94
95jmp_buf toplevel; /* non-local goto stuff for cmd scanner */
96
97char line[200]; /* input line buffer */
98char *stringbase; /* current scan point in line buffer */
99char argbuf[200]; /* argument storage buffer */
100char *argbase; /* current storage point in arg buffer */
101int margc; /* count of arguments on input line */
102const char *margv[20]; /* args parsed from input line */
103int cpend; /* flag: if != 0, then pending server reply */
104int mflag; /* flag: if != 0, then active multi command */
105
106int options; /* used during socket creation */
107
108int macnum; /* number of defined macros */
109struct macel macros[16];
110char macbuf[4096];
111
112/*
113 * Need to start a listen on the data channel
114 * before we send the command, otherwise the
115 * server's connect may fail.
116 */
117int sendport = -1;
118
119static const char *slurpstring();
120
121
122int main(int argc, const char *argv[])
123{
124 const char *cp;
125 int top;
126#if 0
127 char homedir[MAXPATHLEN];
128#endif
129
130 int err;
131 WORD wVerReq;
132
134 struct servent *sp; /* service spec for tcp/ftp */
135
136 /* Disable output buffering, for the benefit of Emacs. */
137 //setbuf(stdout, NULL);
138
139 _fmode = O_BINARY; // This causes an error somewhere.
140
141 wVerReq = MAKEWORD(1,1);
142
143 err = WSAStartup(wVerReq, &WSAData);
144 if (err != 0)
145 {
146 fprintf(stderr, "Could not initialize Windows socket interface.");
147 exit(1);
148 }
149
150 sp = getservbyname("ftp", "tcp");
151 if (sp == 0) {
152 fprintf(stderr, "ftp: ftp/tcp: unknown service\n");
153 exit(1);
154 }
155
156 portnum = sp->s_port;
157
158
159 doglob = 1;
160 interactive = 1;
161 autologin = 1;
162 argc--, argv++;
163 while (argc > 0 && **argv == '-') {
164 for (cp = *argv + 1; *cp; cp++)
165 switch (*cp) {
166
167 case 'd':
168 options |= SO_DEBUG;
169 debug++;
170 break;
171
172 case 'v':
173 verbose++;
174 break;
175
176 case 't':
177 trace++;
178 break;
179
180 case 'i':
181 interactive = 0;
182 break;
183
184 case 'n':
185 autologin = 0;
186 break;
187
188 case 'g':
189 doglob = 0;
190 break;
191
192 default:
194 "ftp: %c: unknown option\n", *cp);
195 exit(1);
196 }
197 argc--, argv++;
198 }
199// fromatty = isatty(fileno(stdin));
200 fromatty = 1; // Strengthen this test
201 /*
202 * Set up defaults for FTP.
203 */
204 (void) strcpy(typename, "ascii"), type = TYPE_A;
205 (void) strcpy(formname, "non-print"), form = FORM_N;
206 (void) strcpy(modename, "stream"), mode = MODE_S;
207 (void) strcpy(structname, "file"), stru = STRU_F;
208 (void) strcpy(bytename, "8"), bytesize = 8;
209 if (fromatty)
210 verbose++;
211 cpend = 0; /* no pending replies */
212 proxy = 0; /* proxy not active */
213 passivemode = 1; /* passive mode *is* active */
214 crflag = 1; /* strip c.r. on ascii gets */
215 /*
216 * Set up the home directory in case we're globbing.
217 */
218#if 0
219 cp = getlogin();
220 if (cp != NULL) {
221 pw = getpwnam(cp);
222 }
223 if (pw == NULL)
224 pw = getpwuid(getuid());
225 if (pw != NULL) {
226 home = homedir;
227 (void) strcpy(home, pw->pw_dir);
228 }
229#endif
230 cp = getenv("SystemDrive");
231 if (cp != NULL && *cp != 0)
232 {
233 strcpy(home, cp);
234 strcat(home, "/");
235 }
236 else
237 {
238 strcpy(home, "C:/");
239 }
240 if (argc > 0) {
241 if (setjmp(toplevel))
242 exit(0);
243// (void) signal(SIGINT, intr);
244// (void) signal(SIGPIPE, lostpeer);
245 setpeer(argc + 1, argv - 1);
246 }
247 top = setjmp(toplevel) == 0;
248 if (top) {
249// (void) signal(SIGINT, intr);
250// (void) signal(SIGPIPE, lostpeer);
251 }
252 for (;;) {
254 top = 1;
255 }
256}
257
258void intr(void)
259{
260 longjmp(toplevel, 1);
261}
262
263void lostpeer(void)
264{
265 extern SOCKET cout;
266 extern int data;
267
268 if (connected) {
269 if (cout) {
271 cout = 0;
272 }
273 if (data >= 0) {
274 (void) shutdown(data, 1+1);
275 (void) close(data);
276 data = -1;
277 }
278 connected = 0;
279 }
280 pswitch(1);
281 if (connected) {
282 if (cout) {
284 cout = 0;
285 }
286 connected = 0;
287 }
288 proxflag = 0;
289 pswitch(0);
290}
291
292/*char *
293tail(char *filename)
294{
295 register char *s;
296
297 while (*filename) {
298 s = rindex(filename, '/');
299 if (s == NULL)
300 break;
301 if (s[1])
302 return (s + 1);
303 *s = '\0';
304 }
305 return (filename);
306}
307*/
308/*
309 * Command parser.
310 */
312{
313 register struct cmd *c;
314
315 if (!top)
316 (void) putchar('\n');
317 for (;;) {
318 (void) fflush(stdout);
319 if (fromatty) {
320 printf("ftp> ");
321 (void) fflush(stdout);
322 }
323 if (gets(line) == 0) {
324 if (feof(stdin) || ferror(stdin))
325 quit(0, NULL);
326 break;
327 }
328 if (line[0] == 0)
329 break;
330 makeargv();
331 if (margc == 0) {
332 continue;
333 }
334 c = getcmd(margv[0]);
335 if (c == (struct cmd *)-1) {
336 printf("?Ambiguous command\n");
337 continue;
338 }
339 if (c == 0) {
340 printf("?Invalid command\n");
341 continue;
342 }
343 if (c->c_conn && !connected) {
344 printf ("Not connected.\n");
345 continue;
346 }
347 (*c->c_handler)(margc, margv);
348 if (bell && c->c_bell)
349 (void) putchar('\007');
350 if (c->c_handler != help)
351 break;
352 }
353 (void) fflush(stdout);
354// (void) signal(SIGINT, intr);
355// (void) signal(SIGPIPE, lostpeer);
356}
357
358struct cmd *
359getcmd(const char *name)
360{
361 extern struct cmd cmdtab[];
362 const char *p, *q;
363 struct cmd *c, *found;
364 int nmatches, longest;
365
366 longest = 0;
367 nmatches = 0;
368 found = 0;
369 for (c = cmdtab; (p = c->c_name); c++) {
370 for (q = name; *q == *p++; q++)
371 if (*q == 0) /* exact match? */
372 return (c);
373 if (!*q) { /* the name was a prefix */
374 if (q - name > longest) {
375 longest = q - name;
376 nmatches = 1;
377 found = c;
378 } else if (q - name == longest)
379 nmatches++;
380 }
381 }
382 if (nmatches > 1)
383 return ((struct cmd *)-1);
384 return (found);
385}
386
387/*
388 * Slice a string up into argc/argv.
389 */
390
392
393void makeargv(void)
394{
395 const char **argp;
396
397 margc = 0;
398 argp = margv;
399 stringbase = line; /* scan from first of buffer */
400 argbase = argbuf; /* store from first of buffer */
401 slrflag = 0;
402 while ((*argp++ = slurpstring()))
403 margc++;
404}
405
406/*
407 * Parse string into argbuf;
408 * implemented with FSM to
409 * handle quoting and strings
410 */
411static const char *
413{
414 int got_one = 0;
415 register char *sb = stringbase;
416 register char *ap = argbase;
417 char *tmp = argbase; /* will return this if token found */
418
419 if (*sb == '!' || *sb == '$') { /* recognize ! as a token for shell */
420 switch (slrflag) { /* and $ as token for macro invoke */
421 case 0:
422 slrflag++;
423 stringbase++;
424 return ((*sb == '!') ? "!" : "$");
425 /* NOTREACHED */
426 case 1:
427 slrflag++;
429 break;
430 default:
431 break;
432 }
433 }
434
435S0:
436 switch (*sb) {
437
438 case '\0':
439 goto OUT1;
440
441 case ' ':
442 case '\t':
443 sb++; goto S0;
444
445 default:
446 switch (slrflag) {
447 case 0:
448 slrflag++;
449 break;
450 case 1:
451 slrflag++;
452 altarg = sb;
453 break;
454 default:
455 break;
456 }
457 goto S1;
458 }
459
460S1:
461 switch (*sb) {
462
463 case ' ':
464 case '\t':
465 case '\0':
466 goto OUT1; /* end of token */
467
468 case '\\':
469 sb++; goto S2; /* slurp next character */
470
471 case '"':
472 sb++; goto S3; /* slurp quoted string */
473
474 default:
475 *ap++ = *sb++; /* add character to token */
476 got_one = 1;
477 goto S1;
478 }
479
480S2:
481 switch (*sb) {
482
483 case '\0':
484 goto OUT1;
485
486 default:
487 *ap++ = *sb++;
488 got_one = 1;
489 goto S1;
490 }
491
492S3:
493 switch (*sb) {
494
495 case '\0':
496 goto OUT1;
497
498 case '"':
499 sb++; goto S1;
500
501 default:
502 *ap++ = *sb++;
503 got_one = 1;
504 goto S3;
505 }
506
507OUT1:
508 if (got_one)
509 *ap++ = '\0';
510 argbase = ap; /* update storage pointer */
511 stringbase = sb; /* update scan pointer */
512 if (got_one) {
513 return(tmp);
514 }
515 switch (slrflag) {
516 case 0:
517 slrflag++;
518 break;
519 case 1:
520 slrflag++;
521 altarg = (char *) 0;
522 break;
523 default:
524 break;
525 }
526 return((char *)0);
527}
528
529#define HELPINDENT (sizeof ("directory"))
530
531/*
532 * Help command.
533 * Call each command handler with argc == 0 and argv[0] == name.
534 */
535void help(int argc, const char *argv[])
536{
537 extern struct cmd cmdtab[];
538 struct cmd *c;
539
540 if (argc == 1) {
541 register int i, j, w, k;
542 int columns, width = 0, lines;
543 extern int NCMDS;
544
545 printf("Commands may be abbreviated. Commands are:\n\n");
546 for (c = cmdtab; c < &cmdtab[NCMDS]; c++) {
547 int len = strlen(c->c_name);
548
549 if (len > width)
550 width = len;
551 }
552 width = (width + 8) &~ 7;
553 columns = 80 / width;
554 if (columns == 0)
555 columns = 1;
556 lines = (NCMDS + columns - 1) / columns;
557 for (i = 0; i < lines; i++) {
558 for (j = 0; j < columns; j++) {
559 c = cmdtab + j * lines + i;
560 if (c->c_name && (!proxy || c->c_proxy)) {
561 printf("%s", c->c_name);
562 }
563 else if (c->c_name) {
564 for (k=0; k < (int) strlen(c->c_name); k++) {
565 (void) putchar(' ');
566 }
567 }
568 if (c + lines >= &cmdtab[NCMDS]) {
569 printf("\n");
570 break;
571 }
572 w = strlen(c->c_name);
573 while (w < width) {
574 w = (w + 8) &~ 7;
575 (void) putchar('\t');
576 }
577 }
578 }
579 (void) fflush(stdout);
580 return;
581 }
582 while (--argc > 0) {
583 const char *arg;
584 arg = *++argv;
585 c = getcmd(arg);
586 if (c == (struct cmd *)-1)
587 printf("?Ambiguous help command %s\n", arg);
588 else if (c == (struct cmd *)0)
589 printf("?Invalid help command %s\n", arg);
590 else
591 printf("%-*s\t%s\n", (int)HELPINDENT,
592 c->c_name, c->c_help);
593 }
594 (void) fflush(stdout);
595}
static int argc
Definition: ServiceArgs.c:12
char * strcat(char *DstString, const char *SrcString)
Definition: utclib.c:568
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
char * strcpy(char *DstString, const char *SrcString)
Definition: utclib.c:388
#define O_BINARY
Definition: acwin.h:109
#define close
Definition: acwin.h:98
int help
Definition: sort.c:20
long uid_t
Definition: various.h:8
void quit(int argc, const char *argv[])
Definition: cmds.c:1606
void setpeer(int argc, const char *argv[])
Definition: cmds.c:49
void pswitch(int flag)
Definition: ftp.c:1310
char formname[32]
Definition: main.c:88
int verbose
Definition: main.c:60
void cmdscanner(int top)
Definition: main.c:311
int passivemode
Definition: main.c:68
int mcase
Definition: main.c:72
int proxy
Definition: main.c:67
void lostpeer(void)
Definition: main.c:263
int mode
Definition: main.c:91
char * altarg
Definition: main.c:78
char argbuf[200]
Definition: main.c:99
char pasv[64]
Definition: main.c:77
const char * margv[20]
Definition: main.c:102
uid_t getuid(void)
Definition: uid.c:27
char mapin[MAXPATHLEN]
Definition: main.c:82
int crflag
Definition: main.c:76
static char sccsid[]
Definition: main.c:33
int code
Definition: main.c:75
int macnum
Definition: main.c:108
char line[200]
Definition: main.c:97
int sunique
Definition: main.c:70
char * argbase
Definition: main.c:100
int bell
Definition: main.c:65
char ntin[17]
Definition: main.c:79
char ntout[17]
Definition: main.c:80
struct cmd * getcmd(const char *name)
Definition: main.c:359
char macbuf[4096]
Definition: main.c:110
int form
Definition: main.c:89
int proxflag
Definition: main.c:69
int autologin
Definition: main.c:49
int hash
Definition: main.c:58
char * globerr
Definition: main.c:48
int stru
Definition: main.c:87
int options
Definition: main.c:106
int trace
Definition: main.c:57
int runique
Definition: main.c:71
int cpend
Definition: main.c:103
void intr(void)
Definition: main.c:258
struct macel macros[16]
Definition: main.c:109
int connected
Definition: main.c:61
char mapout[MAXPATHLEN]
Definition: main.c:83
int fromatty
Definition: main.c:62
static const char * slurpstring()
Definition: main.c:412
int mflag
Definition: main.c:104
int mapflag
Definition: main.c:74
char copyright[]
Definition: main.c:27
int ntflag
Definition: main.c:73
#define HELPINDENT
Definition: main.c:529
int debug
Definition: main.c:64
int bytesize
Definition: main.c:93
int margc
Definition: main.c:101
char modename[32]
Definition: main.c:90
char * stringbase
Definition: main.c:98
int doglob
Definition: main.c:66
char structname[32]
Definition: main.c:86
jmp_buf toplevel
Definition: main.c:95
int sendport
Definition: main.c:117
int interactive
Definition: main.c:63
void makeargv(void)
Definition: main.c:393
short portnum
Definition: main.c:45
char * getlogin(void)
char bytename[32]
Definition: main.c:92
int slrflag
Definition: main.c:391
void got_one(struct protocol *l)
Definition: dispatch.c:194
int NCMDS
Definition: cmdtab.c:171
struct cmd cmdtab[]
Definition: cmdtab.c:95
#define setjmp
Definition: setjmp.h:209
_JBTYPE jmp_buf[_JBLEN]
Definition: setjmp.h:186
int putchar(int c)
Definition: crtsupp.c:12
#define NULL
Definition: types.h:112
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
Definition: typeof.h:31
INT WINAPI WSAStartup(IN WORD wVersionRequested, OUT LPWSADATA lpWSAData)
Definition: startup.c:113
superblock * sb
Definition: btrfs.c:4261
#define uid_t
Definition: types.h:70
int main()
Definition: test.c:6
unsigned short WORD
Definition: ntddk_ex.h:93
#define printf
Definition: freeldr.h:94
#define STRU_F
Definition: ftp_var.h:50
#define MODE_S
Definition: ftp_var.h:46
#define TYPE_A
Definition: ftp_var.h:36
#define FORM_N
Definition: ftp_var.h:54
#define MAXPATHLEN
Definition: ftp_var.h:35
PSERVENT WSAAPI getservbyname(IN const char FAR *name, IN const char FAR *proto)
Definition: getxbyxx.c:500
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
GLint GLint GLsizei width
Definition: gl.h:1546
GLdouble GLdouble GLdouble GLdouble q
Definition: gl.h:2063
const GLubyte * c
Definition: glext.h:8905
GLdouble GLdouble GLdouble GLdouble top
Definition: glext.h:10859
GLenum mode
Definition: glext.h:6217
GLfloat GLfloat p
Definition: glext.h:8902
GLenum GLsizei len
Definition: glext.h:6722
GLubyte GLubyte GLubyte GLubyte w
Definition: glext.h:6102
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
#define stdout
Definition: stdio.h:99
_Check_return_ _CRTIMP int __cdecl ferror(_In_ FILE *_File)
#define stderr
Definition: stdio.h:100
_Check_return_ _CRTIMP int __cdecl feof(_In_ FILE *_File)
_Check_return_opt_ _CRTIMP int __cdecl fprintf(_Inout_ FILE *_File, _In_z_ _Printf_format_string_ const char *_Format,...)
_Check_return_opt_ _CRTIMP int __cdecl fflush(_Inout_opt_ FILE *_File)
#define stdin
Definition: stdio.h:98
_CRTIMP char *__cdecl gets(char *_Buffer)
Definition: file.c:3645
_CRTIMP int _fmode
Definition: fmode.c:4
_Check_return_ char *__cdecl getenv(_In_z_ const char *_VarName)
#define cout
Definition: iostream.cpp:38
#define c
Definition: ke_i.h:80
POINT cp
Definition: magnifier.c:59
static const WCHAR sp[]
Definition: suminfo.c:287
int k
Definition: mpi.c:3369
#define argv
Definition: mplay32.c:18
#define closesocket
Definition: ncftp.h:477
#define err(...)
#define S2(x)
Definition: test.h:219
#define S1(x)
Definition: test.h:218
#define S3(x)
Definition: test.h:220
#define exit(n)
Definition: config.h:202
INT WSAAPI shutdown(IN SOCKET s, IN INT how)
Definition: sockctrl.c:506
Definition: ftp_var.h:139
Definition: tftpd.h:38
Definition: parser.c:49
Definition: ftp_var.h:148
Definition: name.c:39
eMaj lines
Definition: tritemp.h:206
#define MAKEWORD(a, b)
Definition: typedefs.h:248
void * arg
Definition: msvc.h:10
void int int ULONGLONG int va_list * ap
Definition: winesup.h:36
UINT_PTR SOCKET
Definition: winsock.h:47
#define SO_DEBUG
Definition: winsock.h:178