ReactOS  0.4.15-dev-1384-g878186b
main.c File Reference
#include "precomp.h"
#include <fcntl.h>
Include dependency graph for main.c:

Go to the source code of this file.

Macros

#define HELPINDENT   (sizeof ("directory"))
 

Functions

uid_t getuid (void)
 
void intr (void)
 
void lostpeer (void)
 
chargetlogin (void)
 
static const charslurpstring ()
 
int main (int argc, const char *argv[])
 
void cmdscanner (int top)
 
struct cmdgetcmd (const char *name)
 
void makeargv (void)
 
void help (int argc, const char *argv[])
 

Variables

char copyright []
 
static char sccsid [] = "@(#)main.c based on 5.13 (Berkeley) 3/14/89"
 
short portnum
 
char home [128]
 
chargloberr
 
int autologin
 
int trace
 
int hash
 
int verbose
 
int connected
 
int fromatty
 
int interactive
 
int debug
 
int bell
 
int doglob
 
int proxy
 
int passivemode
 
int proxflag
 
int sunique
 
int runique
 
int mcase
 
int ntflag
 
int mapflag
 
int code
 
int crflag
 
char pasv [64]
 
charaltarg
 
char ntin [17]
 
char ntout [17]
 
char mapin [MAXPATHLEN]
 
char mapout [MAXPATHLEN]
 
char typename [32]
 
int type
 
char structname [32]
 
int stru
 
char formname [32]
 
int form
 
char modename [32]
 
int mode
 
char bytename [32]
 
int bytesize
 
jmp_buf toplevel
 
char line [200]
 
charstringbase
 
char argbuf [200]
 
charargbase
 
int margc
 
const charmargv [20]
 
int cpend
 
int mflag
 
int options
 
int macnum
 
struct macel macros [16]
 
char macbuf [4096]
 
int sendport = -1
 
int slrflag
 

Macro Definition Documentation

◆ HELPINDENT

#define HELPINDENT   (sizeof ("directory"))

Definition at line 529 of file main.c.

Function Documentation

◆ cmdscanner()

void cmdscanner ( int  top)

Definition at line 311 of file main.c.

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 }
_Check_return_ _CRTIMP int __cdecl ferror(_In_ FILE *_File)
struct png_info_def **typedef void(__cdecl typeof(png_destroy_read_struct))(struct png_struct_def **
Definition: typeof.h:49
int bell
Definition: main.c:65
Definition: ftp_var.h:139
_CRTIMP char *__cdecl gets(char *_Buffer)
Definition: file.c:3643
void quit(int argc, const char *argv[])
Definition: cmds.c:1606
FILE * stdin
FILE * stdout
int fromatty
Definition: main.c:62
int putchar(int c)
Definition: crtsupp.c:12
Definition: parser.c:48
void makeargv(void)
Definition: main.c:393
int margc
Definition: main.c:101
_Check_return_ _CRTIMP int __cdecl feof(_In_ FILE *_File)
const GLubyte * c
Definition: glext.h:8905
_Check_return_opt_ _CRTIMP int __cdecl fflush(_Inout_opt_ FILE *_File)
#define NULL
Definition: types.h:112
int connected
Definition: main.c:61
#define c
Definition: ke_i.h:80
const char * margv[20]
Definition: main.c:102
GLdouble GLdouble GLdouble GLdouble top
Definition: glext.h:10859
struct cmd * getcmd(const char *name)
Definition: main.c:359
void help(int argc, const char *argv[])
Definition: main.c:535
#define printf
Definition: config.h:203

Referenced by main().

◆ getcmd()

struct cmd* getcmd ( const char name)

Definition at line 359 of file main.c.

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 }
Definition: ftp_var.h:139
const char * name
Definition: main.c:224
struct cmd cmdtab[]
Definition: cmdtab.c:95
const GLubyte * c
Definition: glext.h:8905
GLdouble GLdouble GLdouble GLdouble q
Definition: gl.h:2063
Definition: name.c:38
#define c
Definition: ke_i.h:80
GLfloat GLfloat p
Definition: glext.h:8902

Referenced by cmdscanner(), domacro(), doproxy(), and help().

◆ getlogin()

char* getlogin ( void  )

Referenced by GetPwByName(), gl_set_home_dir(), and main().

◆ getuid()

uid_t getuid ( void  )

Definition at line 27 of file uid.c.

28 {
29  return (0);
30 }

Referenced by main().

◆ help()

void help ( int  argc,
const char argv[] 
)

Definition at line 535 of file main.c.

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
GLint GLint GLsizei width
Definition: gl.h:1546
GLubyte GLubyte GLubyte GLubyte w
Definition: glext.h:6102
struct png_info_def **typedef void(__cdecl typeof(png_destroy_read_struct))(struct png_struct_def **
Definition: typeof.h:49
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
Definition: ftp_var.h:139
void * arg
Definition: msvc.h:10
struct cmd cmdtab[]
Definition: cmdtab.c:95
#define argv
Definition: mplay32.c:18
FILE * stdout
int NCMDS
Definition: cmdtab.c:171
int putchar(int c)
Definition: crtsupp.c:12
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
eMaj lines
Definition: tritemp.h:206
const GLubyte * c
Definition: glext.h:8905
GLenum GLsizei len
Definition: glext.h:6722
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
_Check_return_opt_ _CRTIMP int __cdecl fflush(_Inout_opt_ FILE *_File)
#define c
Definition: ke_i.h:80
#define HELPINDENT
Definition: main.c:529
struct cmd * getcmd(const char *name)
Definition: main.c:359
int proxy
Definition: main.c:67
int k
Definition: mpi.c:3369
#define printf
Definition: config.h:203
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
Definition: typeof.h:31

Referenced by cmdscanner().

◆ intr()

void intr ( void  )

Definition at line 258 of file main.c.

259 {
260  longjmp(toplevel, 1);
261 }
int longjmp(jmp_buf buf, int retval)
jmp_buf toplevel
Definition: main.c:95

Referenced by UhciInterruptService().

◆ lostpeer()

void lostpeer ( void  )

Definition at line 263 of file main.c.

264 {
265  extern SOCKET cout;
266  extern int data;
267 
268  if (connected) {
269  if (cout) {
270  closesocket(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) {
283  closesocket(cout);
284  cout = 0;
285  }
286  connected = 0;
287  }
288  proxflag = 0;
289  pswitch(0);
290 }
struct png_info_def **typedef void(__cdecl typeof(png_destroy_read_struct))(struct png_struct_def **
Definition: typeof.h:49
int proxflag
Definition: main.c:69
#define closesocket
Definition: precomp.h:57
#define cout
Definition: iostream.cpp:38
INT WSAAPI shutdown(IN SOCKET s, IN INT how)
Definition: sockctrl.c:506
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
#define close
Definition: acwin.h:98
void pswitch(int flag)
Definition: ftp.c:1310
int connected
Definition: main.c:61
UINT_PTR SOCKET
Definition: winsock.h:47

Referenced by getreply(), proxtrans(), recvrequest(), and reset().

◆ main()

int main ( int argc  ,
const char argv[] 
)

Definition at line 122 of file main.c.

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:
193  fprintf(stdout,
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 (;;) {
253  cmdscanner(top);
254  top = 1;
255  }
256 }
WSADATA WSAData
Definition: wintirpc.c:31
char formname[32]
Definition: main.c:88
static int argc
Definition: ServiceArgs.c:12
void setpeer(int argc, const char *argv[])
Definition: cmds.c:49
struct png_info_def **typedef void(__cdecl typeof(png_destroy_read_struct))(struct png_struct_def **
Definition: typeof.h:49
char * strcat(char *DstString, const char *SrcString)
Definition: utclib.c:568
#define MAKEWORD(a, b)
Definition: typedefs.h:248
#define FORM_N
Definition: ftp_var.h:54
void cmdscanner(int top)
Definition: main.c:311
#define argv
Definition: mplay32.c:18
char structname[32]
Definition: main.c:86
int autologin
Definition: main.c:49
FILE * stdout
int doglob
Definition: main.c:66
int fromatty
Definition: main.c:62
short portnum
Definition: main.c:45
_Check_return_opt_ _CRTIMP int __cdecl fprintf(_Inout_ FILE *_File, _In_z_ _Printf_format_string_ const char *_Format,...)
int crflag
Definition: main.c:76
int bytesize
Definition: main.c:93
INT WINAPI WSAStartup(IN WORD wVersionRequested, OUT LPWSADATA lpWSAData)
Definition: startup.c:113
#define STRU_F
Definition: ftp_var.h:50
PSERVENT WSAAPI getservbyname(IN const char FAR *name, IN const char FAR *proto)
Definition: getxbyxx.c:500
Definition: tftpd.h:37
unsigned short WORD
Definition: ntddk_ex.h:93
char * getlogin(void)
int interactive
Definition: main.c:63
int form
Definition: main.c:89
int cpend
Definition: main.c:103
#define MAXPATHLEN
Definition: ftp_var.h:35
jmp_buf toplevel
Definition: main.c:95
#define err(...)
GLenum mode
Definition: glext.h:6217
_CRTIMP int _fmode
Definition: txtmode.c:13
int debug
Definition: main.c:64
_Check_return_ char *__cdecl getenv(_In_z_ const char *_VarName)
int passivemode
Definition: main.c:68
uid_t getuid(void)
Definition: uid.c:27
#define MODE_S
Definition: ftp_var.h:46
#define O_BINARY
Definition: acwin.h:109
int stru
Definition: main.c:87
int verbose
Definition: main.c:60
#define NULL
Definition: types.h:112
char modename[32]
Definition: main.c:90
#define setjmp
Definition: setjmp.h:183
int trace
Definition: main.c:57
POINT cp
Definition: magnifier.c:59
char * strcpy(char *DstString, const char *SrcString)
Definition: utclib.c:388
FILE * stderr
static const WCHAR sp[]
Definition: suminfo.c:288
GLdouble GLdouble GLdouble GLdouble top
Definition: glext.h:10859
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
void exit(int exitcode)
Definition: _exit.c:33
int proxy
Definition: main.c:67
#define TYPE_A
Definition: ftp_var.h:36
char bytename[32]
Definition: main.c:92
#define SO_DEBUG
Definition: winsock.h:178

Referenced by mainCRTStartup().

◆ makeargv()

void makeargv ( void  )

Definition at line 393 of file main.c.

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 }
char argbuf[200]
Definition: main.c:99
static const char * slurpstring()
Definition: main.c:412
char * stringbase
Definition: main.c:98
char * argbase
Definition: main.c:100
char line[200]
Definition: main.c:97
int margc
Definition: main.c:101
int slrflag
Definition: main.c:391
const char * margv[20]
Definition: main.c:102

Referenced by cd(), cmdscanner(), delete(), do_chmod(), domacro(), doproxy(), getit(), login(), macdef(), makedir(), mdelete(), mget(), mls(), modtime(), mput(), put(), quote(), removedir(), renamefile(), setnmap(), setpeer(), site(), sizecmd(), and user().

◆ slurpstring()

static const char * slurpstring ( void  )
static

Definition at line 412 of file main.c.

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++;
428  altarg = stringbase;
429  break;
430  default:
431  break;
432  }
433  }
434 
435 S0:
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 
460 S1:
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 
480 S2:
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 
492 S3:
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 
507 OUT1:
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 }
#define S1(x)
Definition: test.h:207
superblock * sb
Definition: btrfs.c:4220
#define S2(x)
Definition: test.h:208
void got_one(struct protocol *l)
Definition: dispatch.c:195
#define S3(x)
Definition: test.h:209
char * stringbase
Definition: main.c:98
char * argbase
Definition: main.c:100
int slrflag
Definition: main.c:391
void int int ULONGLONG int va_list * ap
Definition: winesup.h:32
char * altarg
Definition: main.c:78

Referenced by makeargv().

Variable Documentation

◆ altarg

char* altarg

Definition at line 78 of file main.c.

Referenced by setnmap(), shell(), and slurpstring().

◆ argbase

char* argbase

Definition at line 100 of file main.c.

Referenced by makeargv(), and slurpstring().

◆ argbuf

char argbuf[200]

Definition at line 99 of file main.c.

Referenced by makeargv().

◆ autologin

int autologin

Definition at line 49 of file main.c.

Referenced by main(), and setpeer().

◆ bell

int bell

Definition at line 65 of file main.c.

Referenced by cmdscanner(), domacro(), setbell(), and status().

◆ bytename

char bytename[32]

Definition at line 92 of file main.c.

Referenced by main().

◆ bytesize

int bytesize

Definition at line 93 of file main.c.

Referenced by main().

◆ code

Definition at line 75 of file main.c.

Referenced by extract_test().

◆ connected

int connected

Definition at line 61 of file main.c.

Referenced by cmdscanner(), and lostpeer().

◆ copyright

char copyright[]
Initial value:
=
"@(#) Copyright (c) 1985, 1989 Regents of the University of California.\n\
All rights reserved.\n"

Definition at line 27 of file main.c.

Referenced by pvd_write().

◆ cpend

int cpend

Definition at line 103 of file main.c.

Referenced by command(), getreply(), main(), proxtrans(), pswitch(), recvrequest(), and sendrequest().

◆ crflag

int crflag

Definition at line 76 of file main.c.

Referenced by main(), recvrequest(), setcr(), and status().

◆ debug

int debug

Definition at line 64 of file main.c.

Referenced by main().

◆ doglob

int doglob

Definition at line 66 of file main.c.

Referenced by globulize(), main(), mput(), remglob(), setglob(), and status().

◆ form

◆ formname

char formname[32]

Definition at line 88 of file main.c.

Referenced by main(), setform(), and status().

◆ fromatty

int fromatty

Definition at line 62 of file main.c.

Referenced by cmdscanner(), main(), mdelete(), mget(), mls(), and mput().

◆ globerr

char* globerr

Definition at line 48 of file main.c.

Referenced by globulize(), and mput().

◆ hash

Definition at line 58 of file main.c.

Referenced by CRYPTDLG_IsCertAllowed().

◆ home

◆ interactive

int interactive

Definition at line 63 of file main.c.

Referenced by main(), and WinMain().

◆ line

char line[200]

Definition at line 97 of file main.c.

Referenced by makeargv().

◆ macbuf

char macbuf[4096]

Definition at line 110 of file main.c.

Referenced by macdef(), and ruserpass().

◆ macnum

int macnum

Definition at line 108 of file main.c.

Referenced by disconnect(), domacro(), login(), macdef(), ruserpass(), and status().

◆ macros

struct macel macros[16]

Definition at line 109 of file main.c.

Referenced by domacro(), login(), macdef(), ruserpass(), and status().

◆ mapflag

int mapflag

Definition at line 74 of file main.c.

Referenced by getit(), mget(), mput(), pswitch(), put(), setnmap(), and status().

◆ mapin

char mapin[MAXPATHLEN]

Definition at line 82 of file main.c.

Referenced by domap(), pswitch(), setnmap(), and status().

◆ mapout

char mapout[MAXPATHLEN]

Definition at line 83 of file main.c.

Referenced by domap(), pswitch(), setnmap(), and status().

◆ margc

◆ margv

◆ mcase

int mcase

Definition at line 72 of file main.c.

Referenced by getit(), mget(), mput(), pswitch(), setcase(), and status().

◆ mflag

int mflag

Definition at line 104 of file main.c.

◆ mode

Definition at line 91 of file main.c.

◆ modename

char modename[32]

Definition at line 90 of file main.c.

Referenced by fsetmode(), main(), and status().

◆ ntflag

int ntflag

Definition at line 73 of file main.c.

Referenced by getit(), mget(), mput(), pswitch(), put(), setntrans(), and status().

◆ ntin

char ntin[17]

Definition at line 79 of file main.c.

Referenced by dotrans(), pswitch(), setntrans(), and status().

◆ ntout

char ntout[17]

Definition at line 80 of file main.c.

Referenced by dotrans(), pswitch(), setntrans(), and status().

◆ options

Definition at line 106 of file main.c.

◆ passivemode

int passivemode

Definition at line 68 of file main.c.

Referenced by dataconn(), initconn(), main(), and setpassive().

◆ pasv

char pasv[64]

Definition at line 77 of file main.c.

Referenced by getreply(), initconn(), and proxtrans().

◆ portnum

short portnum

Definition at line 45 of file main.c.

Referenced by main(), and setpeer().

◆ proxflag

int proxflag

Definition at line 69 of file main.c.

Referenced by doproxy(), getreply(), and lostpeer().

◆ proxy

◆ runique

int runique

Definition at line 71 of file main.c.

Referenced by proxtrans(), pswitch(), recvrequest(), setrunique(), and status().

◆ sccsid

char sccsid[] = "@(#)main.c based on 5.13 (Berkeley) 3/14/89"
static

Definition at line 33 of file main.c.

◆ sendport

int sendport = -1

Definition at line 117 of file main.c.

Referenced by initconn(), setport(), and status().

◆ slrflag

int slrflag

Definition at line 391 of file main.c.

Referenced by makeargv(), and slurpstring().

◆ stringbase

char* stringbase

Definition at line 98 of file main.c.

Referenced by makeargv(), and slurpstring().

◆ stru

int stru

Definition at line 87 of file main.c.

Referenced by main().

◆ structname

char structname[32]

Definition at line 86 of file main.c.

Referenced by main(), setstruct(), and status().

◆ sunique

int sunique

Definition at line 70 of file main.c.

Referenced by mput(), pswitch(), put(), setsunique(), and status().

◆ toplevel

jmp_buf toplevel

◆ trace

◆ type

◆ typename

char typename[32]

Definition at line 84 of file main.c.

Referenced by of_type().

◆ verbose

int verbose

Definition at line 60 of file main.c.

Referenced by main().