Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2003-09-08 06:50:02 +0400
committerChristopher Faylor <me@cgf.cx>2003-09-08 06:50:02 +0400
commitd31c5928ddc2f5cde08e89e55fb0cbc9656fd2b9 (patch)
tree97ce783bf4012dcdcb75532063ab09db79c77e33 /winsup/utils
parent2e5228f9648032bc8b53cdb6a278f41d963a5669 (diff)
* Makefile.in: Detect existence of mingw zlib headers and libraries. Build
cygcheck wihtout package checking if they are unavailable. * dump_setup.cc: Generate dummy zlib macros when zlib is not available. (open_package_list): Use zlib functions to uncompress package lists. Return gzFile rather than FILE *. (check_package_files): Change fp to gzFile to accommodate zlib functions. Use gzgets to read from package file. Use gzclose to close the handle. (package_list): Ditto. (package_find): Ditto.
Diffstat (limited to 'winsup/utils')
-rw-r--r--winsup/utils/ChangeLog13
-rw-r--r--winsup/utils/Makefile.in22
-rw-r--r--winsup/utils/dump_setup.cc54
3 files changed, 59 insertions, 30 deletions
diff --git a/winsup/utils/ChangeLog b/winsup/utils/ChangeLog
index ea8492945..5e0e23d79 100644
--- a/winsup/utils/ChangeLog
+++ b/winsup/utils/ChangeLog
@@ -1,3 +1,16 @@
+2003-09-07 Christopher Faylor <cgf@redhat.com>
+
+ * Makefile.in: Detect existence of mingw zlib headers and libraries.
+ Build cygcheck wihtout package checking if they are unavailable.
+ * dump_setup.cc: Generate dummy zlib macros when zlib is not available.
+ (open_package_list): Use zlib functions to uncompress package lists.
+ Return gzFile rather than FILE *.
+ (check_package_files): Change fp to gzFile to accommodate zlib
+ functions. Use gzgets to read from package file. Use gzclose to close
+ the handle.
+ (package_list): Ditto.
+ (package_find): Ditto.
+
2003-09-05 Igor Pechtchanski <pechtcha@cs.nyu.edu>
* dump_setup.cc (check_package_files): Don't fail on empty package.
diff --git a/winsup/utils/Makefile.in b/winsup/utils/Makefile.in
index 43c0ee5da..9d0edb36a 100644
--- a/winsup/utils/Makefile.in
+++ b/winsup/utils/Makefile.in
@@ -40,6 +40,15 @@ libbfd:=${shell $(CC) -B$(bupdir2)/bfd/ --print-file-name=libbfd.a}
libintl:=${shell $(CC) -B$(bupdir2)/intl/ --print-file-name=libintl.a}
build_dumper:=${shell test -r $(libbfd) && test -r ${libintl} && echo 1}
+libz:=${shell $(CC) -mno-cygwin --print-file-name=libz.a}
+zlib_h:=-include ${patsubst %/lib/libz.a,%/include/libz.h,$(libz)}
+zconf_h:=-include ${patsubst %/lib/libz.a,%/include/zconf.h,$(libz)}
+ifeq "${dir $(libz)}" "./"
+zlib_h:=
+zconf_h:=
+libz:=
+endif
+
DUMPER_INCLUDES:=-I$(bupdir2)/bfd -I$(updir1)/include
libcygwin:=$(cygwin_build)/libcygwin.a
@@ -90,11 +99,14 @@ else
endif
cygcheck.exe: cygcheck.o mingw_getopt.o path.o dump_setup.o $(MINGW_DEP_LDLIBS)
+ifeq "$(libz)" ""
+ echo '*** Building cygcheck without package content checking due to missing mingw libz.a.'
+endif
ifdef VERBOSE
- $(CXX) $(MINGW_CXXFLAGS) -o $@ ${wordlist 1,4,$^} -B$(mingw_build)/ $(MINGW_LDFLAGS)
+ $(CXX) $(MINGW_CXXFLAGS) -o $@ ${wordlist 1,4,$^} -B$(mingw_build)/ $(MINGW_LDFLAGS) $(libz)
else
- @echo $(CXX) -o $@ ${wordlist 1,2,$^} ${filter-out -B%, $(MINGW_CXXFLAGS) $(MINGW_LDFLAGS)};\
- $(CXX) $(MINGW_CXXFLAGS) -o $@ ${wordlist 1,4,$^} -B$(mingw_build)/ $(MINGW_LDFLAGS)
+ @echo $(CXX) -o $@ ${wordlist 1,2,$^} ${filter-out -B%, $(MINGW_CXXFLAGS) $(MINGW_LDFLAGS)} $(libz);\
+ $(CXX) $(MINGW_CXXFLAGS) -o $@ ${wordlist 1,4,$^} -B$(mingw_build)/ $(MINGW_LDFLAGS) $(libz)
endif
dumper.o: dumper.cc dumper.h
@@ -139,10 +151,10 @@ endif
dump_setup.o: dump_setup.cc
ifdef VERBOSE
- ${filter-out -I$(newlib_source)/%,$(COMPILE_CXX)} $c -o $(@D)/$(basename $@)$o $(MINGW_CXXFLAGS) $<
+ ${filter-out -I$(newlib_source)/%,$(COMPILE_CXX)} $(zconf_h) $(zlib_h) $c -o $(@D)/$(basename $@)$o $(MINGW_CXXFLAGS) $<
else
@echo $(CXX) $c -o $(@D)/$(basename $@)$o $(MINGW_CXXFLAGS) ... $^;\
- ${filter-out -I$(newlib_source)/%,$(COMPILE_CXX)} $c -o $(@D)/$(basename $@)$o $(MINGW_CXXFLAGS) $<
+ ${filter-out -I$(newlib_source)/%,$(COMPILE_CXX)} $(zconf_h) $(zlib_h) $c -o $(@D)/$(basename $@)$o $(MINGW_CXXFLAGS) $<
endif
cygcheck.o: cygcheck.cc
diff --git a/winsup/utils/dump_setup.cc b/winsup/utils/dump_setup.cc
index bc8d18a18..11d32c4af 100644
--- a/winsup/utils/dump_setup.cc
+++ b/winsup/utils/dump_setup.cc
@@ -18,6 +18,15 @@ details. */
#include <sys/stat.h>
#include <errno.h>
#include "path.h"
+#if 0
+#include "zlib.h"
+#endif
+
+#ifndef ZLIB_VERSION
+typedef void * gzFile;
+#define gzgets(fp, buf, size) ({0;})
+#define gzclose(fp) ({0;})
+#endif
static int package_len = 20;
static unsigned int version_len = 10;
@@ -234,27 +243,22 @@ file_exists (int verbose, char *filename, const char *alt, char *package)
return true;
}
-static FILE *
+static gzFile
open_package_list (char *package)
{
- char filelist[MAX_PATH + 1] = "etc/setup/";
+ char filelist[MAX_PATH + 1] = "/etc/setup/";
strcat (strcat (filelist, package), ".lst.gz");
- if (!file_exists (false, filelist, NULL, NULL))
+ if (!file_exists (false, filelist + 1, NULL, NULL))
return NULL;
- static char *zcat;
- static char *zcat_end;
- if (!zcat)
- {
- zcat = cygpath ("/bin/gzip.exe", NULL);
- while (char *p = strchr (zcat, '/'))
- *p = '\\';
- zcat = (char *) realloc (zcat, strlen (zcat) + sizeof (" -dc /") + MAX_PATH);
- zcat_end = strchr (strcat (zcat, " -dc /"), '\0');
- }
-
- strcpy (zcat_end, filelist);
- FILE *fp = popen (zcat, "rt");
+ gzFile fp;
+#ifndef ZLIB_VERSION
+ fp = NULL;
+#else
+ char *fn = cygpath (filelist, NULL);
+ fp = gzopen (fn, "rb9");
+ free (fn);
+#endif
return fp;
}
@@ -262,7 +266,7 @@ open_package_list (char *package)
static bool
check_package_files (int verbose, char *package)
{
- FILE *fp = open_package_list (package);
+ gzFile fp = open_package_list (package);
if (!fp)
{
if (verbose)
@@ -272,7 +276,7 @@ check_package_files (int verbose, char *package)
bool result = true;
char buf[MAX_PATH + 1];
- while (fgets (buf, MAX_PATH, fp))
+ while (gzgets (fp, buf, MAX_PATH))
{
char *filename = strtok(buf, "\n");
@@ -298,7 +302,7 @@ check_package_files (int verbose, char *package)
}
}
- fclose (fp);
+ gzclose (fp);
return result;
}
@@ -414,7 +418,7 @@ package_list (int verbose, char **argv)
for (int i = 0; packages[i].name; i++)
{
- FILE *fp = open_package_list (packages[i].name);
+ gzFile fp = open_package_list (packages[i].name);
if (!fp)
{
if (verbose)
@@ -427,14 +431,14 @@ package_list (int verbose, char **argv)
printf ("Package: %s-%s\n", packages[i].name, packages[i].ver);
char buf[MAX_PATH + 1];
- while (fgets (buf, MAX_PATH, fp))
+ while (gzgets (fp, buf, MAX_PATH))
{
char *lastchar = strchr(buf, '\n');
if (lastchar[-1] != '/')
printf ("%s/%s", (verbose?" ":""), buf);
}
- fclose (fp);
+ gzclose (fp);
}
free (packages);
@@ -454,13 +458,13 @@ package_find (int verbose, char **argv)
for (int i = 0; packages[i].name; i++)
{
- FILE *fp = open_package_list (packages[i].name);
+ gzFile fp = open_package_list (packages[i].name);
if (!fp)
continue;
char buf[MAX_PATH + 2];
buf[0] = '/';
- while (fgets (buf + 1, MAX_PATH, fp))
+ while (gzgets (fp, buf + 1, MAX_PATH))
{
char *filename = strtok(buf, "\n");
int flen = strlen (filename);
@@ -488,7 +492,7 @@ package_find (int verbose, char **argv)
}
}
- fclose (fp);
+ gzclose (fp);
}
free (packages);