Add large file support.
authorAndre Noll <maan@systemlinux.org>
Wed, 18 Jun 2008 13:18:06 +0000 (15:18 +0200)
committerAndre Noll <maan@systemlinux.org>
Wed, 18 Jun 2008 13:18:06 +0000 (15:18 +0200)
This is needed on 32bit systems for files > 2G. Only tested on Linux
so far.

Makefile
create.c

index 8dcf26d..60f3c28 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -12,6 +12,13 @@ CPPFLAGS += -Werror-implicit-function-declaration
 CPPFLAGS += -Wmissing-format-attribute
 CPPFLAGS += -Wunused-macros
 CPPFLAGS += -Wbad-function-cast
+CPPFLAGS += -D_LARGEFILE64_SOURCE
+CPPFLAGS += $(shell getconf LFS64_CFLAGS)
+
+LDFLAGS += -D_LARGEFILE64_SOURCE
+LDFLAGS += $(shell getconf LFS64_LDFLAGS)
+LDFLAGS += $(shell getconf LFS64_LIBS)
+
 
 Makefile.deps: $(wildcard *.c *.h)
        gcc -MM -MG *.c > $@
@@ -19,7 +26,7 @@ Makefile.deps: $(wildcard *.c *.h)
 -include Makefile.deps
 
 adu: $(objects)
-       $(CC) -o $@ $(objects) -lcrypto -losl
+       $(CC) -o $@ $(LDFLAGS) $(objects) -lcrypto -losl
 
 cmdline.o: cmdline.c cmdline.h
        $(CC) -c $(CPPFLAGS) $<
index 5c243d8..47c7155 100644 (file)
--- a/create.c
+++ b/create.c
@@ -133,7 +133,7 @@ static int scan_dir(char *dirname, uint64_t *parent_dir_num)
        }
        while ((entry = readdir(dir))) {
                mode_t m;
-               struct stat s;
+               struct stat64 s;
                uint32_t uid;
                uint64_t size;
                struct user_info *ui;
@@ -142,8 +142,8 @@ static int scan_dir(char *dirname, uint64_t *parent_dir_num)
                        continue;
                if (!strcmp(entry->d_name, ".."))
                        continue;
-               if (lstat(entry->d_name, &s) == -1) {
-                       WARNING_LOG("lstat error for %s/%s (%s)\n",
+               if (lstat64(entry->d_name, &s) == -1) {
+                       WARNING_LOG("lstat64 error for %s/%s (%s)\n",
                                dirname, entry->d_name, strerror(errno));
                        continue;
                }