Hi,

On Wed, Dec 11, 2002 at 01:01:39AM +0100, David Weinehall wrote:
> Here is an implementation of file-retriever in C, since its TODO file
> expressed an interest in having one.

Oops, I did this also but forgot to send, patch attached.

What amount of error checking code should be done?
Can we use GNU extension functions as most src is using _GNU_SOURCE anyway?
Is any interest in rewriting all other retrievers in C?

regards,
guillem
diff -Naur file/debian/control file-patched/debian/control
--- file/debian/control 2002-05-09 12:39:15.000000000 +0200
+++ file-patched/debian/control 2002-12-11 05:02:46.000000000 +0100
@@ -6,7 +6,7 @@
 Standards-Version: 3.5.2.0
 
 Package: file-retriever
-Architecture: all
+Architecture: any
 Depends: ${shlibs:Depends}
 Provides: retriever
 Description: File retriever
diff -Naur file/debian/rules file-patched/debian/rules
--- file/debian/rules   2000-12-13 05:59:59.000000000 +0100
+++ file-patched/debian/rules   2002-12-11 05:01:07.000000000 +0100
@@ -10,19 +10,21 @@
 
 PACKAGE=$(shell dh_listpackages)
 VERSION=$(shell dpkg-parsechangelog | grep ^Version: | cut -d ' ' -f 2)
-ARCH=all
+ARCH=$(shell dpkg --print-architecture)
 FILENAME=$(PACKAGE)_$(VERSION)_$(ARCH).udeb
 PRIORITY=$(shell grep ^Priority: debian/control | cut -d ' ' -f 2)
 
 build: build-stamp
 build-stamp:
        dh_testdir
+       $(MAKE) small
        touch build-stamp
 
 clean:
        dh_testdir
        dh_testroot
        rm -f build-stamp
+       $(MAKE) clean
        dh_clean
 
 install: build
@@ -33,14 +35,14 @@
        install file-retriever \
                debian/file-retriever/usr/lib/debian-installer/retriever/file-retriever
 
-# Build architecture-dependent files here.
-binary-arch: build install
+# Build architecture-independent files here.
+binary-indep: build install
 # We have nothing to do by default.
 
-# Build architecture-independent files here.
+# Build architecture-dependent files here.
 #
 # Note that this builds a .udeb, which is not policy compliant or anything.
-binary-indep: build install
+binary-arch: build install
        dh_testdir
        dh_testroot
        dh_installdebconf
diff -Naur file/file-retriever file-patched/file-retriever
--- file/file-retriever 2002-12-11 05:21:17.000000000 +0100
+++ file-patched/file-retriever 1970-01-01 01:00:00.000000000 +0100
@@ -1,2 +0,0 @@
-#!/bin/sh -e
-ln -sf `pwd`/debs/$1 $2
diff -Naur file/file-retriever.c file-patched/file-retriever.c
--- file/file-retriever.c       1970-01-01 01:00:00.000000000 +0100
+++ file-patched/file-retriever.c       2002-12-02 06:40:00.000000000 +0100
@@ -0,0 +1,52 @@
+/*
+ * file-retriever
+ *
+ * Copyright (C) 2002 Guillem Jover <[EMAIL PROTECTED]>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ */
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+int main(int argc, char **argv)
+{
+       if (argc < 2)
+               return 1;
+
+       if (strcmp(argv[1], "retrieve") == 0) {
+               char *oldpath, *newpath, *pwd;
+
+               if (argc < 4)
+                       return 1;
+
+               pwd = get_current_dir_name();
+               if (pwd == NULL)
+                       return errno;
+
+               asprintf(&oldpath, "%s/debs/%s", pwd, argv[2]);
+               newpath = argv[3];
+               unlink(newpath);
+               symlink(oldpath, newpath);
+       } else {
+               return 1;
+       }
+
+       return 0;
+}
+
diff -Naur file/Makefile file-patched/Makefile
--- file/Makefile       1970-01-01 01:00:00.000000000 +0100
+++ file-patched/Makefile       2002-12-11 04:57:52.000000000 +0100
@@ -0,0 +1,25 @@
+# Makefile based on net-retriever's
+
+ARCH=$(shell dpkg --print-architecture)
+CFLAGS=-Wall -g -D_GNU_SOURCE -DARCH=\"$(ARCH)\"
+OBJS=$(subst .c,.o,$(wildcard *.c))
+BIN=file-retriever
+LIBS=
+
+ifdef DEBUG
+CFLAGS:=$(CFLAGS) -DDODEBUG
+endif
+
+all: $(BIN)
+
+$(BIN): $(OBJS)
+       $(CC) -o $(BIN) $(OBJS) $(LIBS)
+
+# Size optimized and stripped binary target.
+small: CFLAGS:=-Os $(CFLAGS) -DSMALL
+small: clean $(BIN)
+       strip --remove-section=.comment --remove-section=.note $(BIN)
+       ls -l $(BIN)
+
+clean:
+       -rm -f $(BIN) $(OBJS) *~

Reply via email to