summaryrefslogtreecommitdiff
path: root/net-misc/snarf
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
committerV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
commit4f2d7949f03e1c198bc888f2d05f421d35c57e21 (patch)
treeba5f07bf3f9d22d82e54a462313f5d244036c768 /net-misc/snarf
reinit the tree, so we can have metadata
Diffstat (limited to 'net-misc/snarf')
-rw-r--r--net-misc/snarf/Manifest8
-rw-r--r--net-misc/snarf/files/snarf-basename-patch.diff147
-rw-r--r--net-misc/snarf/files/snarf-fix-off-by-ones.diff45
-rw-r--r--net-misc/snarf/files/snarf-unlink-empty.diff37
-rw-r--r--net-misc/snarf/metadata.xml10
-rw-r--r--net-misc/snarf/snarf-7.0-r3.ebuild34
6 files changed, 281 insertions, 0 deletions
diff --git a/net-misc/snarf/Manifest b/net-misc/snarf/Manifest
new file mode 100644
index 000000000000..5482421cf03c
--- /dev/null
+++ b/net-misc/snarf/Manifest
@@ -0,0 +1,8 @@
+AUX snarf-basename-patch.diff 4438 SHA256 623a480b8e558f6d4146e1ef767edf77aa2907da84d1157c701e5212f1e743bd SHA512 55ee3e284f9f9da0ca61a60bd8674302f6aef5c503e9ace0060fdc00f59172daafe3fd50e5ece4114a75e0707b2ea6dd9a4d3e00b5d4ee20dd8e8a68b2cd2436 WHIRLPOOL d0242ba6072e66022fb50cc0f7403848da1873c63c9bf9da1d75e18686b3352053f5e27cbd78677978e6c90162d8e6f724a112a18947d15886c285a4a0b51aca
+AUX snarf-fix-off-by-ones.diff 1592 SHA256 fda2a91bed2f4b617cd75c3d7c4e01c8c21a7ba76090dca6723d65b3c935f137 SHA512 0e42437031fbfacbfaaeb76432b19ff65cd979cfebb0b17adef230fae75bc69cafccc386f95f656c1d40f01a849f0e4daa0d027fb78d97932ac5881c22e0cfb6 WHIRLPOOL 92ffee73c796a4c09499484fe2259d8dd8ed61049ecdce7f510342e0149e27b8d7088a4bfe38953feff118fb3fd4021ecb3ea1c1fded8a6824f2cac1fdd100ca
+AUX snarf-unlink-empty.diff 1581 SHA256 fb6de2f9dc11bbab2ab693ddc848edbbab4ae6434036de576c8467a9cbfd6e28 SHA512 bb33a2b5c4d929d8a35fce94812c8231f76b54914c9dc57d07dee7bf311e4fd034a97a343c588eba5479cbacd406cb82acc1835e15c911cd04100eff2dd3d398 WHIRLPOOL b2cdd161a306123264e4667ecdcebe8ccde8b6bc901175d5dc2598b8edaebcb5e7ece075d855ce2c62feb77f4728014f53d707a2f0cc208ce2ef49aa47b0b2de
+DIST snarf-7.0.tar.gz 64495 SHA256 85a0846d452b02eaff225bf68fb36e68dfc55be5a58fda38dcb3602dcc300a89 SHA512 311c3e4a1b32fd024da8a5c8167888f254608d538695e30b3c632c606f67d1e3d94d8c88deb7850f782f38412f1bfd9022b0ee780c8644655f0648ccf0a0354e WHIRLPOOL 2dd59e8fc550c2428c2342ed52d2ee5d6de9a3821e3ea4dc736dd2e8934b3e543f62d418eea718322983c4be97aa2fd1cf3ee48a29ca37a18ec83260f5ca12b8
+EBUILD snarf-7.0-r3.ebuild 863 SHA256 19feebc3417321ad0a4960ac54303bb1bb97d0a610a6769720dbdd51087d38ea SHA512 77a80ff1a372a6a16750b95c2ec023418b5c94fed06988636c81f23b8aff031a61e620561642ba5f6981a76f153a0a243f2de505f0b1aad31ca1a40b72f06de7 WHIRLPOOL 1e6fffe63448a2bf3bbc40ed102c5b89809189f23f40e7bb6762ce6deb91e8cc74656af1581e4c16dca70a695f684c893924868e5c81ae72269751a5450d9ede
+MISC ChangeLog 2621 SHA256 b31ed36ec2b24faa48f4e22e5ec6a7a4f32cc9781cb7599bf3ac9f76cbc7c313 SHA512 26573b89e5beb100aaae45de23a3ff67c81fe0dc7fc4aa74c5947660a14e608b838478d2cb3243db4a7f420bd43b10b0c98e2fa3a9d234debcc147cb991421e8 WHIRLPOOL 27afe57e08ba79cd9d9c7f5a0c6204e7d459886ee6f58057176c96cc723ccee7f9ac16f57c4a021f54f0c207d54083a758a431bbef2048521eba235d4822c99f
+MISC ChangeLog-2015 3707 SHA256 6b56729abff67166956d048e235d90f7ed4644b619fce55ca4fa817148bae3a6 SHA512 29dd0d1efb1ff51716adf2ce62cbc88cad627c21dae5e326a19b91d682aa88f84ee05e9e4d491de4dd373b0cd643c96c90cdab60fd777284c5b292cbe573ff76 WHIRLPOOL b3d4c84ce5698746992a9ab6f29076f4d0db65290767c3f1193291bf1527a32662bfc64160319c7436094068d8116ba23244059c8c798afd61780a72e0a2a165
+MISC metadata.xml 386 SHA256 f78ace9c040ada26669309bf8e3786a3d84aa1713111bf7611fdbdae22ea12f7 SHA512 07d79153adfb5b7d447668c0fb6d22db9c2c026d5adfca658999107018ca392e55fb673273de986263479e493133e143a2523ef6133867db5c65a8f84f6a220a WHIRLPOOL 31b99d062185120c9d3ea091feb4ae07248040507f88f9853a48d3f68869f8822e6b83f7f13877bd508f66b3e38930823cf23909421cc10f5b1ad6d2e21467d8
diff --git a/net-misc/snarf/files/snarf-basename-patch.diff b/net-misc/snarf/files/snarf-basename-patch.diff
new file mode 100644
index 000000000000..85cafb527d68
--- /dev/null
+++ b/net-misc/snarf/files/snarf-basename-patch.diff
@@ -0,0 +1,147 @@
+diff -ruN snarf-7.0.orig/http.c snarf-7.0/http.c
+--- snarf-7.0.orig/http.c 2000-08-09 01:33:30.000000000 +0100
++++ snarf-7.0/http.c 2003-07-28 12:19:08.000000000 +0100
+@@ -14,8 +14,6 @@
+ #include "util.h"
+ #include "llist.h"
+
+-extern int default_opts;
+-
+ int redirect_count = 0;
+ #define REDIRECT_MAX 10
+
+diff -ruN snarf-7.0.orig/options.c snarf-7.0/options.c
+--- snarf-7.0.orig/options.c 1999-07-27 20:42:51.000000000 +0100
++++ snarf-7.0/options.c 2003-07-28 11:59:05.000000000 +0100
+@@ -8,8 +8,8 @@
+ int default_opts;
+ extern int debug_enabled;
+
+-unsigned char
+-set_options(unsigned char opts, char *optstring)
++unsigned int
++set_options(unsigned int opts, char *optstring)
+ {
+ int i;
+
+@@ -78,6 +78,15 @@
+ case 'd':
+ debug_enabled = !debug_enabled;
+ break;
++
++ case 'b':
++ opts |= OPT_BASENAME;
++ break;
++
++ case 'B':
++ default_opts |= OPT_BASENAME;
++ break;
++
+ default:
+ report(WARN, "unknown option `%c', ignoring", optstring[i]);
+ }
+diff -ruN snarf-7.0.orig/options.h snarf-7.0/options.h
+--- snarf-7.0.orig/options.h 1999-07-27 20:42:51.000000000 +0100
++++ snarf-7.0/options.h 2003-07-28 12:20:47.000000000 +0100
+@@ -12,12 +12,13 @@
+ #define OPT_PROGRESS (1 << 5) /* for python aka markus fleck */
+ #define OPT_BE_MOZILLA (1 << 6) /* To act like Mozilla */
+ #define OPT_BE_MSIE (1 << 7) /* To act like MSIE */
++#define OPT_BASENAME (1 << 8) /* Only show basename() of output */
+
+ /* Funcs */
+
+ #ifdef PROTOTYPES
+
+-unsigned char set_options(unsigned char, char *);
++unsigned int set_options(unsigned int, char *);
+
+ #endif /* PROTOTYPES */
+
+diff -ruN snarf-7.0.orig/snarf.1 snarf-7.0/snarf.1
+--- snarf-7.0.orig/snarf.1 2000-01-17 14:26:13.000000000 +0000
++++ snarf-7.0/snarf.1 2003-07-28 12:45:26.000000000 +0100
+@@ -90,6 +90,9 @@
+ .I "\-m"
+ Send a user-agent string similar to what Microsoft Internet Explorer
+ uses.
++.TP
++.I "\-b"
++Only print the basename of output file with the progress bars.
+ .PP
+ Each option only affects the URL that immediately follows it. To have
+ an option affect all URLs that follow it, use an uppercase letter for
+diff -ruN snarf-7.0.orig/snarf.c snarf-7.0/snarf.c
+--- snarf-7.0.orig/snarf.c 2000-08-09 01:34:45.000000000 +0100
++++ snarf-7.0/snarf.c 2003-07-28 12:43:29.000000000 +0100
+@@ -50,6 +50,7 @@
+ " -n Ignore '-r' and transfer file in its entirety\n"
+ " -m Spoof MSIE user-agent string\n"
+ " -z Spoof Navigator user-agent string\n"
++ " -b Only print basename of output file\n"
+ "\n"
+ "Lowercase option letters only affect the URLs that "
+ "immediately follow them.\n"
+diff -ruN snarf-7.0.orig/url.h snarf-7.0/url.h
+--- snarf-7.0.orig/url.h 1999-07-27 20:42:51.000000000 +0100
++++ snarf-7.0/url.h 2003-07-28 12:00:03.000000000 +0100
+@@ -28,7 +28,7 @@
+ char *proxy;
+ char *proxy_username;
+ char *proxy_password;
+- unsigned char options;
++ unsigned int options;
+ off_t outfile_size;
+ off_t outfile_offset;
+ };
+diff -ruN snarf-7.0.orig/util.c snarf-7.0/util.c
+--- snarf-7.0.orig/util.c 2000-08-09 01:12:39.000000000 +0100
++++ snarf-7.0/util.c 2003-07-28 13:29:46.000000000 +0100
+@@ -32,6 +32,7 @@
+ #include <ctype.h>
+ #include <errno.h>
+ #include <time.h>
++#include <libgen.h>
+ #include "url.h"
+ #include "options.h"
+
+@@ -292,6 +293,10 @@
+
+ filename = strdup(rsrc->outfile);
+
++ if( rsrc->options & OPT_BASENAME ){
++ filename = basename(filename);
++ }
++
+ if( strlen(filename) > 24 )
+ filename[24] = '\0';
+
+@@ -312,6 +317,7 @@
+ progress_update(Progress * p,
+ long int increment)
+ {
++ char *filename = NULL;
+ unsigned int units;
+ char *anim = "-\\|/";
+
+@@ -320,12 +326,16 @@
+
+ p->current += increment;
+
+- if (strlen(p->rsrc->outfile) > 24) {
+- p->rsrc->outfile[24] = '\0';
+- }
++ if( p->rsrc->options & OPT_BASENAME ){
++ filename = basename(strdup(p->rsrc->outfile));
++ } else
++ filename = strdup(p->rsrc->outfile);
+
++ if (strlen(filename) > 24)
++ filename[24] = '\0';
++
+ fprintf(stderr, "\r");
+- fprintf(stderr, "%-25s [", p->rsrc->outfile);
++ fprintf(stderr, "%-25s [", filename);
+
+
+ if( p->length ) {
diff --git a/net-misc/snarf/files/snarf-fix-off-by-ones.diff b/net-misc/snarf/files/snarf-fix-off-by-ones.diff
new file mode 100644
index 000000000000..c0556b3ed851
--- /dev/null
+++ b/net-misc/snarf/files/snarf-fix-off-by-ones.diff
@@ -0,0 +1,45 @@
+diff -ruNp snarf-7.0.orig/ftp.c snarf-7.0/ftp.c
+--- snarf-7.0.orig/ftp.c 2000-08-09 00:27:24.000000000 +0100
++++ snarf-7.0/ftp.c 2007-03-30 20:47:46.046783664 +0100
+@@ -89,7 +89,7 @@ get_line(UrlResource *rsrc, int control)
+ char *end;
+ char buf[BUFSIZE+1];
+
+- while( (bytes_read = read(control, buf, BUFSIZE)) ) {
++ while( (bytes_read = read(control, buf, BUFSIZE)) > 0 ) {
+ if( rsrc->options & OPT_VERBOSE )
+ fwrite(buf, 1, bytes_read, stderr);
+
+diff -ruNp snarf-7.0.orig/http.c snarf-7.0/http.c
+--- snarf-7.0.orig/http.c 2007-03-30 20:46:21.176685880 +0100
++++ snarf-7.0/http.c 2007-03-30 20:47:46.205759496 +0100
+@@ -365,7 +365,7 @@ http_transfer(UrlResource *rsrc)
+
+ bytes_read = read(sock, buf, 8);
+
+- if( bytes_read == 0 ) {
++ if( bytes_read <= 0 ) {
+ close(sock);
+ return 0;
+ }
+diff -ruNp snarf-7.0.orig/url.c snarf-7.0/url.c
+--- snarf-7.0.orig/url.c 1998-11-16 01:29:44.000000000 +0000
++++ snarf-7.0/url.c 2007-03-30 20:47:46.205759496 +0100
+@@ -96,7 +96,7 @@ get_username(char *string, Url *u)
+ return string;
+ }
+
+- username = malloc(i);
++ username = malloc(i+1);
+ memcpy(username, string, i + 1);
+
+ username[i] = '\0';
+@@ -135,7 +135,7 @@ get_password(char *string, Url *u)
+
+ for(i = 0 ; string[i] != '@'; i++);
+
+- password = malloc(i);
++ password = malloc(i+1);
+
+ /* and finally, get the password portion */
+ memcpy(password, string, i);
diff --git a/net-misc/snarf/files/snarf-unlink-empty.diff b/net-misc/snarf/files/snarf-unlink-empty.diff
new file mode 100644
index 000000000000..66f3089b0b63
--- /dev/null
+++ b/net-misc/snarf/files/snarf-unlink-empty.diff
@@ -0,0 +1,37 @@
+diff -urN snarf-7.0.orig/http.c snarf-7.0/http.c
+--- snarf-7.0.orig/http.c 2003-08-01 14:46:26.000000000 +0100
++++ snarf-7.0/http.c 2003-08-01 14:44:02.000000000 +0100
+@@ -447,6 +447,10 @@
+ cleanup:
+ free_http_header(header);
+ close(sock); fclose(out);
++ if ((rsrc->open_created) && (rsrc->outfile_size == 0)
++ && (retval == 0))
++ if (unlink(rsrc->outfile))
++ report(ERR, "unlink %s: %s", rsrc->outfile, strerror(errno));
+ return retval;
+
+ }
+diff -urN snarf-7.0.orig/url.h snarf-7.0/url.h
+--- snarf-7.0.orig/url.h 2003-08-01 14:46:26.000000000 +0100
++++ snarf-7.0/url.h 2003-08-01 13:27:22.000000000 +0100
+@@ -25,6 +25,7 @@
+ struct _UrlResource {
+ Url *url;
+ char *outfile;
++ unsigned int open_created;
+ char *proxy;
+ char *proxy_username;
+ char *proxy_password;
+diff -urN snarf-7.0.orig/util.h snarf-7.0/util.h
+--- snarf-7.0.orig/util.h 2000-08-09 01:12:25.000000000 +0100
++++ snarf-7.0/util.h 2003-08-01 14:53:54.000000000 +0100
+@@ -53,7 +53,7 @@
+ extern int debug_enabled;
+
+ #define open_outfile(x) (((x)->outfile[0] == '-') ? stdout : real_open_outfile(x))
+-#define real_open_outfile(x) (((x)->options & OPT_RESUME && !((x)->options & OPT_NORESUME)) ? (fopen((x)->outfile, "a")) : (fopen((x)->outfile, "w")))
++#define real_open_outfile(x) (((x)->open_created = (access ((x)->outfile, F_OK)) ? 1 : 0 ),((x)->options & OPT_RESUME && !((x)->options & OPT_NORESUME)) ? (fopen((x)->outfile, "a")) : (fopen((x)->outfile, "w")))
+
+ #define safe_free(x) if(x) free(x)
+ #define safe_strdup(x) ( (x) ? strdup(x) : NULL )
diff --git a/net-misc/snarf/metadata.xml b/net-misc/snarf/metadata.xml
new file mode 100644
index 000000000000..b5e6a70e9340
--- /dev/null
+++ b/net-misc/snarf/metadata.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <!-- maintainer-needed -->
+ <longdescription lang="en">
+ snarf is a command line resource grabber. It can transfer files through
+ the http, gopher, finger, and ftp protocols without user interaction.
+ It is small and fast.
+ </longdescription>
+</pkgmetadata>
diff --git a/net-misc/snarf/snarf-7.0-r3.ebuild b/net-misc/snarf/snarf-7.0-r3.ebuild
new file mode 100644
index 000000000000..4148b3f52458
--- /dev/null
+++ b/net-misc/snarf/snarf-7.0-r3.ebuild
@@ -0,0 +1,34 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+inherit eutils
+
+IUSE=""
+DESCRIPTION="Small and fast CLI resource grabber for http, gopher, finger, ftp"
+SRC_URI="http://www.xach.com/snarf/${P}.tar.gz"
+HOMEPAGE="http://www.xach.com/snarf/"
+KEYWORDS="alpha amd64 ppc sparc x86"
+LICENSE="GPL-2"
+SLOT="0"
+
+DEPEND=""
+
+src_unpack() {
+ unpack ${A}
+ epatch "${FILESDIR}"/snarf-basename-patch.diff
+ epatch "${FILESDIR}"/snarf-unlink-empty.diff
+ epatch "${FILESDIR}"/snarf-fix-off-by-ones.diff
+}
+
+src_install() {
+ dobin snarf
+ doman snarf.1
+ dodoc ChangeLog README TODO
+}
+
+pkg_postinst() {
+ elog 'To use snarf with portage, try these settings in your make.conf'
+ elog
+ elog ' FETCHCOMMAND="/usr/bin/snarf -b \${URI} \${DISTDIR}/\${FILE}"'
+ elog ' RESUMECOMMAND="/usr/bin/snarf -rb \${URI} \${DISTDIR}/\${FILE}"'
+}