]> git.pld-linux.org Git - packages/busybox.git/blob - busybox-LFS.patch
- patch correcting behaviour of ftpput command, may be buggy feel free to
[packages/busybox.git] / busybox-LFS.patch
1 diff -Nur busybox-1.00-orig/include/libbb.h busybox-1.00/include/libbb.h
2 --- busybox-1.00-orig/include/libbb.h   2005-02-14 16:53:58.000000000 +0100
3 +++ busybox-1.00/include/libbb.h        2005-02-15 10:55:16.547885312 +0100
4 @@ -193,6 +193,8 @@
5  extern int safe_strtod(char *arg, double* value);
6  extern int safe_strtol(char *arg, long* value);
7  extern int safe_strtoul(char *arg, unsigned long* value);
8 +extern int safe_strtoll(char *arg, long long* value);
9 +extern int safe_strtoull(char *arg, unsigned long long* value);
10  
11  struct suffix_mult {
12         const char *suffix;
13 diff -Nur busybox-1.00-orig/libbb/Makefile.in busybox-1.00/libbb/Makefile.in
14 --- busybox-1.00-orig/libbb/Makefile.in 2004-10-08 09:45:31.000000000 +0200
15 +++ busybox-1.00/libbb/Makefile.in      2005-02-15 10:51:08.585581312 +0100
16 @@ -72,7 +72,7 @@
17         xgetularg_bnd.o xgetularg10_bnd.o xgetularg10.o
18  
19  LIBBB_MSRC4:=$(srcdir)/safe_strtol.c
20 -LIBBB_MOBJ4:=safe_strtoi.o safe_strtod.o safe_strtol.o safe_strtoul.o
21 +LIBBB_MOBJ4:=safe_strtoi.o safe_strtod.o safe_strtol.o safe_strtoul.o safe_strtoull.o safe_strtoll.o
22  
23  LIBBB_MOBJS0=$(patsubst %,$(LIBBB_DIR)%, $(LIBBB_MOBJ0))
24  LIBBB_MOBJS1=$(patsubst %,$(LIBBB_DIR)%, $(LIBBB_MOBJ1))
25 diff -Nur busybox-1.00-orig/libbb/safe_strtol.c busybox-1.00/libbb/safe_strtol.c
26 --- busybox-1.00-orig/libbb/safe_strtol.c       2004-03-06 23:11:45.000000000 +0100
27 +++ busybox-1.00/libbb/safe_strtol.c    2005-02-15 10:53:56.546047440 +0100
28 @@ -90,3 +90,38 @@
29  }
30  #endif
31  
32 +#ifdef L_safe_strtoll
33 +extern
34 +int safe_strtoll(char *arg, long long* value)
35 +{
36 +       char *endptr;
37 +       int errno_save = errno;
38 +
39 +       assert(arg!=NULL);
40 +       errno = 0;
41 +       *value = strtoll(arg, &endptr, 0);
42 +       if (errno != 0 || *endptr!='\0' || endptr==arg) {
43 +               return 1;
44 +       }
45 +       errno = errno_save;
46 +       return 0;
47 +}
48 +#endif
49 +
50 +#ifdef L_safe_strtoull
51 +extern
52 +int safe_strtoull(char *arg, unsigned long long* value)
53 +{
54 +       char *endptr;
55 +       int errno_save = errno;
56 +
57 +       assert(arg!=NULL);
58 +       errno = 0;
59 +       *value = strtoull(arg, &endptr, 0);
60 +       if (errno != 0 || *endptr!='\0' || endptr==arg) {
61 +               return 1;
62 +       }
63 +       errno = errno_save;
64 +       return 0;
65 +}
66 +#endif
67 diff -Nur busybox-1.00-orig/networking/ftpgetput.c busybox-1.00/networking/ftpgetput.c
68 --- busybox-1.00-orig/networking/ftpgetput.c    2004-05-04 12:43:34.000000000 +0200
69 +++ busybox-1.00/networking/ftpgetput.c 2005-02-15 11:02:41.127298968 +0100
70 @@ -152,8 +152,12 @@
71         fd_data = xconnect_ftpdata(server, buf);
72  
73         if (ftpcmd("SIZE ", server_path, control_stream, buf) == 213) {
74 -               unsigned long value=filesize;
75 -               if (safe_strtoul(buf + 4, &value))
76 +               off_t value=filesize;
77 +#ifdef CONFIG_LFS
78 +               if (safe_strtoull(buf + 4, &value))
79 +#else
80 +               if (safe_strtoull(buf + 4, &value))
81 +#endif
82                         bb_error_msg_and_die("SIZE error: %s", buf + 4);
83                 filesize = value;
84         }
85 @@ -240,7 +244,11 @@
86                 fd_local = bb_xopen(local_path, O_RDONLY);
87                 fstat(fd_local, &sbuf);
88  
89 +#ifdef CONFIG_LFS
90 +               sprintf(buf, "ALLO %llu", (unsigned long long)sbuf.st_size);
91 +#else
92                 sprintf(buf, "ALLO %lu", (unsigned long)sbuf.st_size);
93 +#endif
94                 response = ftpcmd(buf, NULL, control_stream, buf);
95                 switch (response) {
96                 case 200:
97 diff -Nur busybox-1.00-orig/networking/wget.c busybox-1.00/networking/wget.c
98 --- busybox-1.00-orig/networking/wget.c 2004-10-08 10:27:40.000000000 +0200
99 +++ busybox-1.00/networking/wget.c      2005-02-15 11:33:10.235232296 +0100
100 @@ -389,8 +389,12 @@
101                          */
102                         while ((s = gethdr(buf, sizeof(buf), sfp, &n)) != NULL) {
103                                 if (strcasecmp(buf, "content-length") == 0) {
104 -                                       unsigned long value;
105 +                                       off_t value;
106 +#ifdef CONFIG_LFS
107 +                                       if (safe_strtoull(s, &value)) {
108 +#else
109                                         if (safe_strtoul(s, &value)) {
110 +#endif
111                                                 close_delete_and_die("content-length %s is garbage", s);
112                                         }
113                                         filesize = value;
114 @@ -460,8 +464,12 @@
115                  * Querying file size
116                  */
117                 if (ftpcmd("SIZE /", target.path, sfp, buf) == 213) {
118 -                       unsigned long value;
119 +                       off_t value;
120 +#ifdef CONFIG_LFS
121 +                       if (safe_strtoull(buf+4, &value)) {
122 +#else
123                         if (safe_strtoul(buf+4, &value)) {
124 +#endif
125                                 close_delete_and_die("SIZE value is garbage");
126                         }
127                         filesize = value;
128 @@ -502,7 +510,12 @@
129          */
130         if (chunked) {
131                 fgets(buf, sizeof(buf), dfp);
132 +#ifdef CONFIG_LFS
133 +               filesize = strtoll(buf, (char **) NULL, 16);
134 +#else
135                 filesize = strtol(buf, (char **) NULL, 16);
136 +#endif
137 +
138         }
139  #ifdef CONFIG_FEATURE_WGET_STATUSBAR
140         if (quiet_flag==FALSE)
141 @@ -524,7 +537,11 @@
142                 if (chunked) {
143                         safe_fgets(buf, sizeof(buf), dfp); /* This is a newline */
144                         safe_fgets(buf, sizeof(buf), dfp);
145 +#ifdef CONFIG_LFS
146 +                       filesize = strtoll(buf, (char **) NULL, 16);
147 +#else
148                         filesize = strtol(buf, (char **) NULL, 16);
149 +#endif
150                         if (filesize==0) {
151                                 chunked = 0; /* all done! */
152                         }
This page took 0.047591 seconds and 3 git commands to generate.