PHONY+=$(EXE_FILES)
endif
-ZGZ_LIB=$(PREFIX)/lib/zgz
+LIBDIR ?= $(PREFIX)/lib
+PKGLIBDIR ?= $(LIBDIR)/pristine-tar
extra_build: zgz/zgz pristine-tar.spec
pod2man -c pristine-tar pristine-tar > pristine-tar.1
ZGZ_SOURCES = zgz/zgz.c zgz/gzip/*.c zgz/old-bzip2/*.c
zgz/zgz: $(ZGZ_SOURCES)
- gcc -Wall -O2 -o $@ $(ZGZ_SOURCES) -lz -DZGZ_LIB=\"$(ZGZ_LIB)\"
+ gcc -Wall -O2 -o $@ $(ZGZ_SOURCES) -lz -DPKGLIBDIR=\"$(PKGLIBDIR)\"
extra_install:
install -d $(DESTDIR)$(PREFIX)/bin
install zgz/zgz $(DESTDIR)$(PREFIX)/bin
install -d $(DESTDIR)$(PREFIX)/share/man/man1
install -m 0644 *.1 $(DESTDIR)$(PREFIX)/share/man/man1
- install -d $(DESTDIR)$(ZGZ_LIB)/suse-bzip2
- install pit/suse-bzip2/bzip2 $(DESTDIR)$(ZGZ_LIB)/suse-bzip2
- install pit/suse-bzip2/libbz2* $(DESTDIR)$(ZGZ_LIB)/suse-bzip2
+ install -d $(DESTDIR)$(PKGLIBDIR)/suse-bzip2
+ install pit/suse-bzip2/bzip2 pit/suse-bzip2/libbz2* $(DESTDIR)$(PKGLIBDIR)/suse-bzip2
extra_clean:
$(MAKE) clean -C pit/suse-bzip2 PREFIX=$(PREFIX)
static void usage(void);
static void display_version(void);
static void display_license(void);
-static void shamble(char *, int, char *);
-static void rebrain(char *, char *, int, char *);
+static void shamble(char *, int);
+static void rebrain(char *, char *, int);
int main(int, char **p);
}
old_bzip2(level);
} else if (bzsuse) {
- shamble("suse-bzip2/bzip2", level, "");
+ shamble("suse-bzip2/bzip2", level);
} else if (pbzsuse) {
- rebrain("suse-bzip2", "pbzip2", level, "");
+ rebrain("suse-bzip2", "pbzip2", level);
} else {
if (rsync || new_rsync) {
fprintf(stderr, "%s: --rsyncable not supported with --zlib\n", progname);
/* runs an external, reanimated compressor program */
static void
-shamble(char *zombie, int level, char *opts)
+shamble(char *zombie, int level)
{
- char buf[128];
- sprintf(buf, "%s/%s -%i %s", ZGZ_LIB, zombie, level, opts);
- exit(system(buf));
+ char exec_buf[PATH_MAX];
+ char level_buf[3];
+ char *argv[3];
+ int i;
+
+ snprintf(exec_buf, sizeof(exec_buf), "%s/%s", PKGLIBDIR, zombie);
+ snprintf(level_buf, sizeof(level_buf), "-%i", level);
+
+ i = 0;
+ argv[i++] = exec_buf;
+ argv[i++] = level_buf;
+ argv[i++] = NULL;
+
+ execvp(exec_buf, argv);
+ perror("Failed to run external program");
+ exit(1);
}
/* swaps in a different library and runs a system program */
static void
-rebrain(char *zombie, char *program, int level, char *opts)
+rebrain(char *zombie, char *program, int level)
{
- char buf[128];
+ char path_buf[PATH_MAX];
+ char level_buf[3];
+ char *argv[3];
+ int i;
#if defined(__APPLE__) && defined(__MACH__)
# define LD_PATH_VAR "DYLD_LIBRARY_PATH"
# define LD_PATH_VAR "LD_LIBRARY_PATH"
#endif
- sprintf(buf, LD_PATH_VAR "=%s/%s %s -%i %s",
- ZGZ_LIB, zombie, program, level, opts);
- exit(system(buf));
+ snprintf(path_buf, sizeof(path_buf), "%s/%s", PKGLIBDIR, zombie);
+ /* FIXME - should append, not overwrite */
+ setenv(LD_PATH_VAR, path_buf, 1);
+
+ snprintf(level_buf, sizeof(level_buf), "-%i", level);
+
+ i = 0;
+ argv[i++] = program;
+ argv[i++] = level_buf;
+ argv[i++] = NULL;
+
+ execvp(program, argv);
+ perror("Failed to run external program");
+ exit(1);
}
/* display usage */