Re-add getopt.c for MSWin psql.
authorBruce Momjian
Tue, 29 Oct 2002 04:22:37 +0000 (04:22 +0000)
committerBruce Momjian
Tue, 29 Oct 2002 04:22:37 +0000 (04:22 +0000)
src/port/getopt.c [new file with mode: 0644]
src/utils/getopt.c [deleted file]

diff --git a/src/port/getopt.c b/src/port/getopt.c
new file mode 100644 (file)
index 0000000..ca49f22
--- /dev/null
@@ -0,0 +1,127 @@
+/* This is used by psql under MS Win */
+
+/*
+ * Copyright (c) 1987, 1993, 1994
+ * The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *   must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *   may be used to endorse or promote products derived from this software
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#if defined(LIBC_SCCS) && !defined(lint)
+static char sccsid[] = "@(#)getopt.c   8.3 (Berkeley) 4/27/95";
+#endif   /* LIBC_SCCS and not lint */
+
+#include 
+#include 
+#include 
+
+int            opterr = 1,         /* if error message should be printed */
+           optind = 1,         /* index into parent argv vector */
+           optopt,             /* character checked for validity */
+           optreset;           /* reset getopt */
+char      *optarg;             /* argument associated with option */
+
+#define BADCH  (int)'?'
+#define BADARG (int)':'
+#define EMSG   ""
+
+/*
+ * getopt
+ * Parse argc/argv argument vector.
+ */
+int
+getopt(nargc, nargv, ostr)
+int            nargc;
+char      *const * nargv;
+const char *ostr;
+{
+   extern char *__progname;
+   static char *place = EMSG;  /* option letter processing */
+   char       *oli;            /* option letter list index */
+
+   if (optreset || !*place)
+   {                           /* update scanning pointer */
+       optreset = 0;
+       if (optind >= nargc || *(place = nargv[optind]) != '-')
+       {
+           place = EMSG;
+           return -1;
+       }
+       if (place[1] && *++place == '-' && place[1] == '\0')
+       {                       /* found "--" */
+           ++optind;
+           place = EMSG;
+           return -1;
+       }
+   }                           /* option letter okay? */
+   if ((optopt = (int) *place++) == (int) ':' ||
+       !(oli = strchr(ostr, optopt)))
+   {
+       /*
+        * if the user didn't specify '-' as an option, assume it means
+        * -1.
+        */
+       if (optopt == (int) '-')
+           return -1;
+       if (!*place)
+           ++optind;
+       if (opterr && *ostr != ':')
+           (void) fprintf(stderr,
+                      "%s: illegal option -- %c\n", __progname, optopt);
+       return BADCH;
+   }
+   if (*++oli != ':')
+   {                           /* don't need argument */
+       optarg = NULL;
+       if (!*place)
+           ++optind;
+   }
+   else
+   {                           /* need an argument */
+       if (*place)             /* no white space */
+           optarg = place;
+       else if (nargc <= ++optind)
+       {                       /* no arg */
+           place = EMSG;
+           if (*ostr == ':')
+               return BADARG;
+           if (opterr)
+               (void) fprintf(stderr,
+                              "%s: option requires an argument -- %c\n",
+                              __progname, optopt);
+           return BADCH;
+       }
+       else
+/* white space */
+           optarg = nargv[optind];
+       place = EMSG;
+       ++optind;
+   }
+   return optopt;              /* dump back option letter */
+}
diff --git a/src/utils/getopt.c b/src/utils/getopt.c
deleted file mode 100644 (file)
index e69de29..0000000