summaryrefslogtreecommitdiff
path: root/idlc
diff options
context:
space:
mode:
authorMatthias Huetsch [mhu] <matthias.huetsch@oracle.com>2010-12-13 11:06:14 +0100
committerMatthias Huetsch [mhu] <matthias.huetsch@oracle.com>2010-12-13 11:06:14 +0100
commitb480a8b31cfa6e4b24c111c32905b58e33a52138 (patch)
tree41cc052a715eb7df15cb846bfb26707fffec9f21 /idlc
parent340b22a09175abb796dc7df234962ef958b1ad6f (diff)
parente944bed1166d34170eaa6ff3dcabfc73a5d81edf (diff)
Update from master repository (DEV300_m95).
Diffstat (limited to 'idlc')
-rw-r--r--idlc/source/preproc/getopt.c94
-rw-r--r--idlc/source/preproc/makefile.mk7
-rw-r--r--idlc/source/preproc/nlist.c3
-rw-r--r--idlc/source/preproc/tokens.c6
-rw-r--r--idlc/source/preproc/unix.c7
5 files changed, 13 insertions, 104 deletions
diff --git a/idlc/source/preproc/getopt.c b/idlc/source/preproc/getopt.c
deleted file mode 100644
index a6163e75075c..000000000000
--- a/idlc/source/preproc/getopt.c
+++ /dev/null
@@ -1,94 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#include <stdio.h>
-#include <string.h>
-
-#define EPR fprintf(stderr,
-#define ERR(str, chr) if(opterr) { EPR "%s%c\n", str, chr); }
-
-int opterr = 1;
-int optind = 1;
-int optopt;
-char *optarg;
-
-int
- cppgetopt(int argc, char *const argv[], const char *opts)
-{
- static int sp = 1;
- register int c;
- register char *cp;
-
- if (sp == 1)
- {
- if (optind >= argc ||
- argv[optind][0] != '-' || argv[optind][1] == '\0')
- return -1;
- else
- if (strcmp(argv[optind], "--") == 0)
- {
- optind++;
- return -1;
- }
- }
- optopt = c = argv[optind][sp];
- if (c == ':' || (cp = strchr(opts, c)) == 0)
- {
- ERR(": illegal option -- ", c);
- if (argv[optind][++sp] == '\0')
- {
- optind++;
- sp = 1;
- }
- return '?';
- }
- if (*++cp == ':')
- {
- if (argv[optind][sp + 1] != '\0')
- optarg = &argv[optind++][sp + 1];
- else
- if (++optind >= argc)
- {
- ERR(": option requires an argument -- ", c);
- sp = 1;
- return '?';
- }
- else
- optarg = argv[optind++];
- sp = 1;
- }
- else
- {
- if (argv[optind][++sp] == '\0')
- {
- sp = 1;
- optind++;
- }
- optarg = 0;
- }
- return c;
-}
diff --git a/idlc/source/preproc/makefile.mk b/idlc/source/preproc/makefile.mk
index 7347f815a23f..e6aa457e8b3d 100644
--- a/idlc/source/preproc/makefile.mk
+++ b/idlc/source/preproc/makefile.mk
@@ -43,7 +43,6 @@ LIBSALCPPRT=$(0)
OBJFILES= \
$(OBJ)$/cpp.obj \
$(OBJ)$/eval.obj \
- $(OBJ)$/getopt.obj \
$(OBJ)$/include.obj \
$(OBJ)$/lex.obj \
$(OBJ)$/macro.obj \
@@ -64,6 +63,12 @@ APP1OBJS=$(OBJ)$/cpp.obj
APP1LIBS= $(LB)$/idlcpp.lib
+.IF "$(HAVE_GETOPT)" != "YES"
+.IF "$(GUI)" == "WNT"
+APP1STDLIBS=gnu_getopt.lib
+.ENDIF
+.ENDIF
+
# --- Targets ------------------------------------------------------
.INCLUDE : target.mk
diff --git a/idlc/source/preproc/nlist.c b/idlc/source/preproc/nlist.c
index 3f32fd4cca28..f41313c22aac 100644
--- a/idlc/source/preproc/nlist.c
+++ b/idlc/source/preproc/nlist.c
@@ -29,9 +29,6 @@
#include <string.h>
#include "cpp.h"
-extern int cppgetopt(int, char *const *, const char *);
-extern char *optarg;
-extern int optind;
extern int Cplusplus;
Nlist *kwdefined;
char wd[128];
diff --git a/idlc/source/preproc/tokens.c b/idlc/source/preproc/tokens.c
index 6df35ae1f238..23ab88a5a9e3 100644
--- a/idlc/source/preproc/tokens.c
+++ b/idlc/source/preproc/tokens.c
@@ -474,7 +474,8 @@ void
if (wbp >= &wbuf[OBS])
{
- write(1, wbuf, OBS);
+ if (write(1, wbuf, OBS) != OBS)
+ error(ERROR, "short write!");
if (wbp > &wbuf[OBS])
memcpy(wbuf, wbuf + OBS, wbp - &wbuf[OBS]);
wbp -= OBS;
@@ -490,7 +491,8 @@ void
{
if (wbp > wbuf)
{
- write(1, wbuf, wbp - wbuf);
+ if (write(1, wbuf, wbp - wbuf) != wbp - wbuf)
+ error(ERROR, "short write!");
wbp = wbuf;
}
}
diff --git a/idlc/source/preproc/unix.c b/idlc/source/preproc/unix.c
index 2d37fa1eef95..808b1d90dbd3 100644
--- a/idlc/source/preproc/unix.c
+++ b/idlc/source/preproc/unix.c
@@ -33,15 +33,14 @@
#if (defined(_WIN32) || defined(_MSDOS) || defined(__IBMC__))
#include <io.h>
#include <sys/stat.h>
+#include <external/glibc/getopt.h>
#else
#include <unistd.h>
#endif
#include "cpp.h"
-extern int cppgetopt(int, char *const *, const char *);
-extern char *optarg, rcsid[];
-extern int optind;
+extern char rcsid[];
int Pflag = 0; /* print no line information */
int Iflag = 0; /* print includes */
@@ -62,7 +61,7 @@ void
Tokenrow tr;
setup_kwtab();
- while ((c = cppgetopt(argc, argv, "NOPV:I:D:U:F:A:X:u:l:+")) != -1)
+ while ((c = getopt(argc, argv, "NOPV:I:D:U:F:A:X:u:l:+")) != -1)
switch (c)
{
case 'N':