wok diff busybox/stuff/busybox-1.12.0-ris.u @ rev 5401
busybox: temporary gcc 4.5.0 fix
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Sun May 02 18:57:24 2010 +0200 (2010-05-02) |
parents | |
children |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/busybox/stuff/busybox-1.12.0-ris.u Sun May 02 18:57:24 2010 +0200 1.3 @@ -0,0 +1,97 @@ 1.4 +--- busybox-1.12.0/networking/tftp.c 1.5 ++++ busybox-1.12.0/networking/tftp.c 1.6 +@@ -552,6 +552,63 @@ 1.7 + #undef tsize 1.8 + } 1.9 + 1.10 ++#if ENABLE_FEATURE_TFTPD_RIS 1.11 ++#include <dirent.h> 1.12 ++ 1.13 ++int lookup_entry(const char *comp, char *dest); 1.14 ++void lookup_file(char *filename); 1.15 ++ 1.16 ++int lookup_entry(const char *comp, char *dest) 1.17 ++{ 1.18 ++ DIR *dirp; 1.19 ++ struct dirent *dptr; 1.20 ++ if (!dest) return 0; 1.21 ++ dirp = opendir(dest[0] ? dest : "."); 1.22 ++ while ((dptr = readdir(dirp))) { 1.23 ++ if (!strcasecmp(dptr->d_name, comp)) { 1.24 ++ if (dest[0]) strcat(dest, "/"); 1.25 ++ strcat(dest, dptr->d_name); 1.26 ++ closedir(dirp); 1.27 ++ return 1; 1.28 ++ } 1.29 ++ } 1.30 ++ closedir(dirp); 1.31 ++ return 0; 1.32 ++} 1.33 ++ 1.34 ++void lookup_file(char *filename) 1.35 ++{ 1.36 ++ int found = 0; 1.37 ++ int len = 0; 1.38 ++ char dest[1024]; 1.39 ++ char comp[1024]; 1.40 ++ char *check = filename; 1.41 ++ char *seek = NULL; 1.42 ++ 1.43 ++ dest[0] = 0; 1.44 ++ check++; 1.45 ++ while (*check) { 1.46 ++ seek = strchr(check, '\\'); 1.47 ++ if (!seek) { 1.48 ++ if ((*check) && (lookup_entry(check, dest))) 1.49 ++ found = 1; 1.50 ++ break; 1.51 ++ } 1.52 ++ len = seek - check; 1.53 ++ memcpy(comp, check, len); 1.54 ++ comp[len]=0; 1.55 ++ if (!lookup_entry(comp, dest)) 1.56 ++ break; 1.57 ++ check += len + 1; 1.58 ++ } 1.59 ++ 1.60 ++ if (found) { 1.61 ++ filename[0] = 0; 1.62 ++ strcat(filename, dest); 1.63 ++ } 1.64 ++} 1.65 ++#endif 1.66 ++ 1.67 + #if ENABLE_TFTP 1.68 + 1.69 + int tftp_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; 1.70 +@@ -680,6 +737,11 @@ 1.71 + goto err; 1.72 + } 1.73 + local_file = block_buf + 2; 1.74 ++#if ENABLE_FEATURE_TFTPD_RIS 1.75 ++ if (local_file[0] == '\\') { 1.76 ++ lookup_file(local_file); 1.77 ++ } 1.78 ++#endif 1.79 + if (local_file[0] == '.' || strstr(local_file, "/.")) { 1.80 + error_msg = "dot in file name"; 1.81 + goto err; 1.82 + 1.83 +--- busybox-1.12.0/networking/Config.in 1.84 ++++ busybox-1.12.0/networking/Config.in 1.85 +@@ -794,6 +794,15 @@ 1.86 + In other words: it should be run from inetd in nowait mode, 1.87 + or from udpsvd. Example: "udpsvd -E 0 69 tftpd DIR" 1.88 + 1.89 ++config FEATURE_TFTPD_RIS 1.90 ++ bool "Enable \"RIS\" support" 1.91 ++ default y 1.92 ++ depends on TFTPD 1.93 ++ help 1.94 ++ Add support for the Remote Installation Service. This allows 1.95 ++ a client to get files starting with \ without respecting case. 1.96 ++ Each \ will be replaced by a /. 1.97 ++ 1.98 + config FEATURE_TFTP_GET 1.99 + bool "Enable \"get\" command" 1.100 + default y