[prev in list] [next in list] [prev in thread] [next in thread] 

List:       busybox
Subject:    [RFC PATCH 1/1] patch: Fix to error out for invalid patch
From:       Athira Rajeev <atrajeev () linux ! vnet ! ibm ! com>
Date:       2016-02-26 14:09:28
Message-ID: 616E57EE-1B37-434D-BDDD-5C9B8D5DC617 () linux ! vnet ! ibm ! com
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


When given an invalid patch, busybox reports zero exit code even if the patch is not applied.
With GNU patch, the behaviour is:

# patch < test.patch 
patch: **** Only garbage was found in the patch input.

With busybox patch, I get the following output:

busybox patch < test.patch 
[root@localhost ~]# echo $?
0

Input patch file contents:
==================

cat test.patch:

-- test.c.org	2015-07-15 11:27:51.100000000 +0000
++ test.c	2015-07-15 11:28:11.189000000 +0000
@@ -1,8 +1,8 @@
 #include <stdio.h>
 int main()
 {
-	int i;
-	for (int j ; j <10; j++)
+	int i,j;
+	for (j ; j <10; j++)
 	{
 		printf("j is %d\n", j);
 	}


and test.c file contents:

# cat test.c 
#include <stdio.h>
int main()
{
	int i;
	for (int j ; j <10; j++)
	{
		printf("j is %d\n", j);
	}

}


busybox code loops through patchlines and check for +++, switches state when patches found. 

// state 0: Not in a hunk, look for +++.
// state 1: Found +++ file indicator, look for @@
// state 2: In hunk: counting initial context lines
// state 3: In hunk: getting body

state 2 implies code is getting into the hunk. 
Loop exits if patchline is empty

Adding a patch which has following changes:

- When state is 2, set patch_found to true ( implies a valid patch exists )
- when patchline is NULL,  ( i.e. when end of patch is reached ), set exitval to 1 if:
		patchfile size is non-zero ( that means some content is there in the patch file ) 
		and patch_found is false ( that means no valid patches were found )

Signed-off-by: Athira Rajeev<atrajeev@linux.vnet.ibm.com>


diff --git a/editors/patch.c b/editors/patch.c
index 988021d..6bfdf19 100644
--- a/editors/patch.c
+++ b/editors/patch.c
@@ -352,11 +352,13 @@ int patch_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
 int patch_main(int argc UNUSED_PARAM, char **argv)
 {
 	int opts;
-	int reverse, state = 0;
+	int reverse, size, state = 0;
+	bool patch_found = false;
 	char *oldname = NULL, *newname = NULL;
 	char *opt_p, *opt_i;
 	long oldlen = oldlen; /* for compiler */
 	long newlen = newlen; /* for compiler */
+	struct stat buf;
 
 	INIT_TT();
 
@@ -373,12 +375,22 @@ int patch_main(int argc UNUSED_PARAM, char **argv)
 		}
 	}
 
+	// Get the file size using fstat
+	fstat(STDIN_FILENO, &buf);
+	size = buf.st_size;
+
 	// Loop through the lines in the patch
 	for(;;) {
 		char *patchline;
 
 		patchline = xmalloc_fgetline(stdin);
-		if (!patchline) break;
+		if (!patchline) {
+			if (size !=0 && !patch_found) {
+				printf("Couldnt find a valid patch. \n");
+				TT.exitval = 1;
+			}
+			break;
+		}	
 
 		// Other versions of patch accept damaged patches,
 		// so we need to also.
@@ -460,6 +472,9 @@ int patch_main(int argc UNUSED_PARAM, char **argv)
 			TT.context = 0;
 			state = 2;
 
+			// In hunk, found unified diff, set patch_found
+			patch_found = true;
+
 			// If the --- line is missing or malformed, either oldname
 			// or (for -R) newname could be NULL -- but not both.  Like
 			// GNU patch, proceed based on the +++ line, and avoid SEGVs.





[Attachment #5 (unknown)]

<html><head><meta http-equiv="Content-Type" content="text/html \
charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: \
space; -webkit-line-break: after-white-space;" class=""><pre class="bz_comment_text" \
id="comment_text_14"><span style="font-family: Menlo; background-color: rgb(253, 253, \
253); font-size: 11px;" class="">When given an invalid patch, busybox reports zero \
exit code even if the patch is not applied.</span></pre><pre class="bz_comment_text" \
id="comment_text_14"><div style="margin: 0px; font-family: Menlo; background-color: \
rgb(253, 253, 253);" class=""><span style="font-size: 11px;" class="">With GNU patch, \
the behaviour is:</span></div><div style="margin: 0px; font-family: Menlo; \
background-color: rgb(253, 253, 253);" class=""><span style="font-size: 11px;" \
class=""><br class=""></span></div><div style="margin: 0px; font-family: Menlo; \
background-color: rgb(253, 253, 253);" class=""><span style="font-size: 11px;" \
class=""># patch &lt; test.patch&nbsp;</span></div><div style="margin: 0px; \
font-family: Menlo; background-color: rgb(253, 253, 253);" class=""><span \
style="font-size: 11px;" class="">patch: **** Only garbage was found in the patch \
input.</span></div></pre><div class=""><span style="font-size: 11px;" class=""><br \
class=""></span></div><div class=""><span style="font-size: 11px;" class="">With \
busybox patch, I get the following output:</span></div><div class=""><span \
style="font-size: 11px;" class=""><br class=""></span></div><div class=""><div \
style="margin: 0px; font-family: Menlo; background-color: rgb(253, 253, 253);" \
class=""><span style="font-size: 11px;" class="">busybox patch &lt; \
test.patch&nbsp;</span></div><div style="margin: 0px; font-family: Menlo; \
background-color: rgb(253, 253, 253);" class=""><span style="font-size: 11px;" \
class="">[root@localhost ~]# echo $?</span></div><div style="margin: 0px; \
font-family: Menlo; background-color: rgb(253, 253, 253);" class=""><span \
style="font-size: 11px;" class="">0</span></div></div><div class=""><span \
style="font-size: 11px;" class=""><br class=""></span></div><div class=""><span \
style="font-size: 11px;" class="">Input patch file contents:</span></div><div \
class=""><span style="font-size: 11px;" class="">==================</span></div><div \
class=""><span style="font-size: 11px;" class=""><br class=""></span></div><div \
class=""><div style="margin: 0px; font-family: Menlo; background-color: rgb(253, 253, \
253);" class=""><span style="font-size: 11px;" class="">cat \
test.patch:</span></div></div><div style="margin: 0px; font-family: Menlo; \
background-color: rgb(253, 253, 253);" class=""><span style="font-size: 11px;" \
class=""><br class=""></span></div><div class=""><div style="margin: 0px; \
font-family: Menlo; background-color: rgb(253, 253, 253);" class=""><span \
style="font-size: 11px;" class="">-- <a href="http://test.c.org" \
class="">test.c.org</a><span class="Apple-tab-span" \
style="white-space:pre">	</span>2015-07-15 11:27:51.100000000 +0000</span></div><div \
style="margin: 0px; font-family: Menlo; background-color: rgb(253, 253, 253);" \
class=""><span style="font-size: 11px;" class="">++ test.c<span \
class="Apple-tab-span" style="white-space:pre">	</span>2015-07-15 11:28:11.189000000 \
+0000</span></div><div style="margin: 0px; font-family: Menlo; background-color: \
rgb(253, 253, 253);" class=""><span style="font-size: 11px;" class="">@@ -1,8 +1,8 \
@@</span></div><div style="margin: 0px; font-family: Menlo; background-color: \
rgb(253, 253, 253);" class=""><span style="font-size: 11px;" class="">&nbsp;#include \
&lt;stdio.h&gt;</span></div><div style="margin: 0px; font-family: Menlo; \
background-color: rgb(253, 253, 253);" class=""><span style="font-size: 11px;" \
class="">&nbsp;int main()</span></div><div style="margin: 0px; font-family: Menlo; \
background-color: rgb(253, 253, 253);" class=""><span style="font-size: 11px;" \
class="">&nbsp;{</span></div><div style="margin: 0px; font-family: Menlo; \
background-color: rgb(253, 253, 253);" class=""><span style="font-size: 11px;" \
class="">-<span class="Apple-tab-span" style="white-space:pre">	</span>int \
i;</span></div><div style="margin: 0px; font-family: Menlo; background-color: \
rgb(253, 253, 253);" class=""><span style="font-size: 11px;" class="">-<span \
class="Apple-tab-span" style="white-space:pre">	</span>for (int j ; j &lt;10; \
j++)</span></div><div style="margin: 0px; font-family: Menlo; background-color: \
rgb(253, 253, 253);" class=""><span style="font-size: 11px;" class="">+<span \
class="Apple-tab-span" style="white-space:pre">	</span>int i,j;</span></div><div \
style="margin: 0px; font-family: Menlo; background-color: rgb(253, 253, 253);" \
class=""><span style="font-size: 11px;" class="">+<span class="Apple-tab-span" \
style="white-space:pre">	</span>for (j ; j &lt;10; j++)</span></div><div \
style="margin: 0px; font-family: Menlo; background-color: rgb(253, 253, 253);" \
class=""><span style="font-size: 11px;" class="">&nbsp;<span class="Apple-tab-span" \
style="white-space:pre">	</span>{</span></div><div style="margin: 0px; font-family: \
Menlo; background-color: rgb(253, 253, 253);" class=""><span style="font-size: 11px;" \
class="">&nbsp;<span class="Apple-tab-span" \
style="white-space:pre">		</span>printf("j is %d\n", j);</span></div><div \
style="margin: 0px; font-family: Menlo; background-color: rgb(253, 253, 253);" \
class=""><span style="font-size: 11px;" class="">&nbsp;<span class="Apple-tab-span" \
style="white-space:pre">	</span>}</span></div></div><div class=""><span \
style="font-size: 11px;" class=""><br class=""></span></div><div class=""><span \
style="font-size: 11px;" class=""><br class=""></span></div><div class=""><span \
style="font-size: 11px;" class="">and test.c file contents:</span></div><div \
class=""><span style="font-size: 11px;" class=""><br class=""></span></div><div \
class=""><div style="margin: 0px; font-family: Menlo; background-color: rgb(253, 253, \
253);" class=""><span style="font-size: 11px;" class=""># cat \
test.c&nbsp;</span></div><div style="margin: 0px; font-family: Menlo; \
background-color: rgb(253, 253, 253);" class=""><span style="font-size: 11px;" \
class="">#include &lt;stdio.h&gt;</span></div><div style="margin: 0px; font-family: \
Menlo; background-color: rgb(253, 253, 253);" class=""><span style="font-size: 11px;" \
class="">int main()</span></div><div style="margin: 0px; font-family: Menlo; \
background-color: rgb(253, 253, 253);" class=""><span style="font-size: 11px;" \
class="">{</span></div><div style="margin: 0px; font-family: Menlo; background-color: \
rgb(253, 253, 253);" class=""><span style="font-size: 11px;" class=""><span \
class="Apple-tab-span" style="white-space:pre">	</span>int i;</span></div><div \
style="margin: 0px; font-family: Menlo; background-color: rgb(253, 253, 253);" \
class=""><span style="font-size: 11px;" class=""><span class="Apple-tab-span" \
style="white-space:pre">	</span>for (int j ; j &lt;10; j++)</span></div><div \
style="margin: 0px; font-family: Menlo; background-color: rgb(253, 253, 253);" \
class=""><span style="font-size: 11px;" class=""><span class="Apple-tab-span" \
style="white-space:pre">	</span>{</span></div><div style="margin: 0px; font-family: \
Menlo; background-color: rgb(253, 253, 253);" class=""><span style="font-size: 11px;" \
class=""><span class="Apple-tab-span" style="white-space:pre">		</span>printf("j is \
%d\n", j);</span></div><div style="margin: 0px; font-family: Menlo; background-color: \
rgb(253, 253, 253);" class=""><span style="font-size: 11px;" class=""><span \
class="Apple-tab-span" style="white-space:pre">	</span>}</span></div><div \
style="margin: 0px; font-family: Menlo; background-color: rgb(253, 253, 253); \
min-height: 13px;" class=""><span style="font-size: 11px;" class=""><br \
class=""></span></div><div style="margin: 0px; font-family: Menlo; background-color: \
rgb(253, 253, 253);" class=""><span style="font-size: 11px;" \
class="">}</span></div></div><div class=""><span style="font-size: 11px;" \
class=""><br class=""></span></div><div class=""><span style="font-size: 11px;" \
class=""><br class=""></span></div><div class=""><pre class="bz_comment_text" \
id="comment_text_14"><span style="font-size: 11px;" class="">busybox code loops \
through patchlines and check for +++, switches state when patches found. 

// state 0: Not in a hunk, look for +++.
// state 1: Found +++ file indicator, look for @@
// state 2: In hunk: counting initial context lines
// state 3: In hunk: getting body

state 2 implies code is getting into the hunk. 
Loop exits if patchline is empty

Adding a patch which has following changes:

- When state is 2, set patch_found to true ( implies a valid patch exists )
- when patchline is NULL,  ( i.e. when end of patch is reached ), set exitval to 1 \
if:  patchfile size is non-zero ( that means some content is there in the patch file \
)   and patch_found is false ( that means no valid patches were found \
)</span></pre><div class=""><br class=""></div></div><div class="">Signed-off-by: \
Athira Rajeev&lt;<a href="mailto:atrajeev@linux.vnet.ibm.com" \
class="">atrajeev@linux.vnet.ibm.com</a>&gt;</div><div class=""><br \
class=""></div><div class=""><br class=""></div><div class=""><div style="margin: \
0px; font-size: 11px; font-family: Menlo; background-color: rgb(253, 253, 253);" \
class="">diff --git a/editors/patch.c b/editors/patch.c</div><div style="margin: 0px; \
font-size: 11px; font-family: Menlo; background-color: rgb(253, 253, 253);" \
class="">index 988021d..6bfdf19 100644</div><div style="margin: 0px; font-size: 11px; \
font-family: Menlo; background-color: rgb(253, 253, 253);" class="">--- \
a/editors/patch.c</div><div style="margin: 0px; font-size: 11px; font-family: Menlo; \
background-color: rgb(253, 253, 253);" class="">+++ b/editors/patch.c</div><div \
style="margin: 0px; font-size: 11px; font-family: Menlo; background-color: rgb(253, \
253, 253);" class="">@@ -352,11 +352,13 @@ int patch_main(int argc, char **argv) \
MAIN_EXTERNALLY_VISIBLE;</div><div style="margin: 0px; font-size: 11px; font-family: \
Menlo; background-color: rgb(253, 253, 253);" class="">&nbsp;int patch_main(int argc \
UNUSED_PARAM, char **argv)</div><div style="margin: 0px; font-size: 11px; \
font-family: Menlo; background-color: rgb(253, 253, 253);" class="">&nbsp;{</div><div \
style="margin: 0px; font-size: 11px; font-family: Menlo; background-color: rgb(253, \
253, 253);" class="">&nbsp;<span class="Apple-tab-span" \
style="white-space:pre">	</span>int opts;</div><div style="margin: 0px; font-size: \
11px; font-family: Menlo; background-color: rgb(253, 253, 253);" class="">-<span \
class="Apple-tab-span" style="white-space:pre">	</span>int reverse, state = \
0;</div><div style="margin: 0px; font-size: 11px; font-family: Menlo; \
background-color: rgb(253, 253, 253);" class="">+<span class="Apple-tab-span" \
style="white-space:pre">	</span>int reverse, size, state = 0;</div><div \
style="margin: 0px; font-size: 11px; font-family: Menlo; background-color: rgb(253, \
253, 253);" class="">+<span class="Apple-tab-span" \
style="white-space:pre">	</span>bool patch_found = false;</div><div style="margin: \
0px; font-size: 11px; font-family: Menlo; background-color: rgb(253, 253, 253);" \
class="">&nbsp;<span class="Apple-tab-span" style="white-space:pre">	</span>char \
*oldname = NULL, *newname = NULL;</div><div style="margin: 0px; font-size: 11px; \
font-family: Menlo; background-color: rgb(253, 253, 253);" class="">&nbsp;<span \
class="Apple-tab-span" style="white-space:pre">	</span>char *opt_p, *opt_i;</div><div \
style="margin: 0px; font-size: 11px; font-family: Menlo; background-color: rgb(253, \
253, 253);" class="">&nbsp;<span class="Apple-tab-span" \
style="white-space:pre">	</span>long oldlen = oldlen; /* for compiler */</div><div \
style="margin: 0px; font-size: 11px; font-family: Menlo; background-color: rgb(253, \
253, 253);" class="">&nbsp;<span class="Apple-tab-span" \
style="white-space:pre">	</span>long newlen = newlen; /* for compiler */</div><div \
style="margin: 0px; font-size: 11px; font-family: Menlo; background-color: rgb(253, \
253, 253);" class="">+<span class="Apple-tab-span" \
style="white-space:pre">	</span>struct stat buf;</div><p style="margin: 0px; \
font-size: 11px; font-family: Menlo; background-color: rgb(253, 253, 253); \
min-height: 13px;" class="">&nbsp;<br class="webkit-block-placeholder"></p><div \
style="margin: 0px; font-size: 11px; font-family: Menlo; background-color: rgb(253, \
253, 253);" class="">&nbsp;<span class="Apple-tab-span" \
style="white-space:pre">	</span>INIT_TT();</div><p style="margin: 0px; font-size: \
11px; font-family: Menlo; background-color: rgb(253, 253, 253); min-height: 13px;" \
class="">&nbsp;<br class="webkit-block-placeholder"></p><div style="margin: 0px; \
font-size: 11px; font-family: Menlo; background-color: rgb(253, 253, 253);" \
class="">@@ -373,12 +375,22 @@ int patch_main(int argc UNUSED_PARAM, char \
**argv)</div><div style="margin: 0px; font-size: 11px; font-family: Menlo; \
background-color: rgb(253, 253, 253);" class="">&nbsp;<span class="Apple-tab-span" \
style="white-space:pre">		</span>}</div><div style="margin: 0px; font-size: 11px; \
font-family: Menlo; background-color: rgb(253, 253, 253);" class="">&nbsp;<span \
class="Apple-tab-span" style="white-space:pre">	</span>}</div><p style="margin: 0px; \
font-size: 11px; font-family: Menlo; background-color: rgb(253, 253, 253); \
min-height: 13px;" class="">&nbsp;<br class="webkit-block-placeholder"></p><div \
style="margin: 0px; font-size: 11px; font-family: Menlo; background-color: rgb(253, \
253, 253);" class="">+<span class="Apple-tab-span" style="white-space:pre">	</span>// \
Get the file size using fstat</div><div style="margin: 0px; font-size: 11px; \
font-family: Menlo; background-color: rgb(253, 253, 253);" class="">+<span \
class="Apple-tab-span" style="white-space:pre">	</span>fstat(STDIN_FILENO, \
&amp;buf);</div><div style="margin: 0px; font-size: 11px; font-family: Menlo; \
background-color: rgb(253, 253, 253);" class="">+<span class="Apple-tab-span" \
style="white-space:pre">	</span>size = buf.st_size;</div><div style="margin: 0px; \
font-size: 11px; font-family: Menlo; background-color: rgb(253, 253, 253);" \
class="">+</div><div style="margin: 0px; font-size: 11px; font-family: Menlo; \
background-color: rgb(253, 253, 253);" class="">&nbsp;<span class="Apple-tab-span" \
style="white-space:pre">	</span>// Loop through the lines in the patch</div><div \
style="margin: 0px; font-size: 11px; font-family: Menlo; background-color: rgb(253, \
253, 253);" class="">&nbsp;<span class="Apple-tab-span" \
style="white-space:pre">	</span>for(;;) {</div><div style="margin: 0px; font-size: \
11px; font-family: Menlo; background-color: rgb(253, 253, 253);" class="">&nbsp;<span \
class="Apple-tab-span" style="white-space:pre">		</span>char *patchline;</div><p \
style="margin: 0px; font-size: 11px; font-family: Menlo; background-color: rgb(253, \
253, 253); min-height: 13px;" class="">&nbsp;<br \
class="webkit-block-placeholder"></p><div style="margin: 0px; font-size: 11px; \
font-family: Menlo; background-color: rgb(253, 253, 253);" class="">&nbsp;<span \
class="Apple-tab-span" style="white-space:pre">		</span>patchline = \
xmalloc_fgetline(stdin);</div><div style="margin: 0px; font-size: 11px; font-family: \
Menlo; background-color: rgb(253, 253, 253);" class="">-<span class="Apple-tab-span" \
style="white-space:pre">		</span>if (!patchline) break;</div><div style="margin: 0px; \
font-size: 11px; font-family: Menlo; background-color: rgb(253, 253, 253);" \
class="">+<span class="Apple-tab-span" style="white-space:pre">		</span>if \
(!patchline) {</div><div style="margin: 0px; font-size: 11px; font-family: Menlo; \
background-color: rgb(253, 253, 253);" class="">+<span class="Apple-tab-span" \
style="white-space:pre">			</span>if (size !=0 &amp;&amp; !patch_found) {</div><div \
style="margin: 0px; font-size: 11px; font-family: Menlo; background-color: rgb(253, \
253, 253);" class="">+<span class="Apple-tab-span" \
style="white-space:pre">				</span>printf("Couldnt find a valid patch. \
\n");</div><div style="margin: 0px; font-size: 11px; font-family: Menlo; \
background-color: rgb(253, 253, 253);" class="">+<span class="Apple-tab-span" \
style="white-space:pre">				</span>TT.exitval = 1;</div><div style="margin: 0px; \
font-size: 11px; font-family: Menlo; background-color: rgb(253, 253, 253);" \
class="">+<span class="Apple-tab-span" style="white-space:pre">			</span>}</div><div \
style="margin: 0px; font-size: 11px; font-family: Menlo; background-color: rgb(253, \
253, 253);" class="">+<span class="Apple-tab-span" \
style="white-space:pre">			</span>break;</div><div style="margin: 0px; font-size: \
11px; font-family: Menlo; background-color: rgb(253, 253, 253);" class="">+<span \
class="Apple-tab-span" style="white-space:pre">		</span>}<span class="Apple-tab-span" \
style="white-space:pre">	</span></div><p style="margin: 0px; font-size: 11px; \
font-family: Menlo; background-color: rgb(253, 253, 253); min-height: 13px;" \
class="">&nbsp;<br class="webkit-block-placeholder"></p><div style="margin: 0px; \
font-size: 11px; font-family: Menlo; background-color: rgb(253, 253, 253);" \
class="">&nbsp;<span class="Apple-tab-span" style="white-space:pre">		</span>// Other \
versions of patch accept damaged patches,</div><div style="margin: 0px; font-size: \
11px; font-family: Menlo; background-color: rgb(253, 253, 253);" class="">&nbsp;<span \
class="Apple-tab-span" style="white-space:pre">		</span>// so we need to \
also.</div><div style="margin: 0px; font-size: 11px; font-family: Menlo; \
background-color: rgb(253, 253, 253);" class="">@@ -460,6 +472,9 @@ int \
patch_main(int argc UNUSED_PARAM, char **argv)</div><div style="margin: 0px; \
font-size: 11px; font-family: Menlo; background-color: rgb(253, 253, 253);" \
class="">&nbsp;<span class="Apple-tab-span" \
style="white-space:pre">			</span>TT.context = 0;</div><div style="margin: 0px; \
font-size: 11px; font-family: Menlo; background-color: rgb(253, 253, 253);" \
class="">&nbsp;<span class="Apple-tab-span" style="white-space:pre">			</span>state = \
2;</div><p style="margin: 0px; font-size: 11px; font-family: Menlo; background-color: \
rgb(253, 253, 253); min-height: 13px;" class="">&nbsp;<br \
class="webkit-block-placeholder"></p><div style="margin: 0px; font-size: 11px; \
font-family: Menlo; background-color: rgb(253, 253, 253);" class="">+<span \
class="Apple-tab-span" style="white-space:pre">			</span>// In hunk, found unified \
diff, set patch_found</div><div style="margin: 0px; font-size: 11px; font-family: \
Menlo; background-color: rgb(253, 253, 253);" class="">+<span class="Apple-tab-span" \
style="white-space:pre">			</span>patch_found = true;</div><div style="margin: 0px; \
font-size: 11px; font-family: Menlo; background-color: rgb(253, 253, 253);" \
class="">+</div><div style="margin: 0px; font-size: 11px; font-family: Menlo; \
background-color: rgb(253, 253, 253);" class="">&nbsp;<span class="Apple-tab-span" \
style="white-space:pre">			</span>// If the --- line is missing or malformed, either \
oldname</div><div style="margin: 0px; font-size: 11px; font-family: Menlo; \
background-color: rgb(253, 253, 253);" class="">&nbsp;<span class="Apple-tab-span" \
style="white-space:pre">			</span>// or (for -R) newname could be NULL -- but not \
both.&nbsp; Like</div><div style="margin: 0px; font-size: 11px; font-family: Menlo; \
background-color: rgb(253, 253, 253);" class="">&nbsp;<span class="Apple-tab-span" \
style="white-space:pre">			</span>// GNU patch, proceed based on the +++ line, and \
avoid SEGVs.</div></div><div style="margin: 0px; font-size: 11px; font-family: Menlo; \
background-color: rgb(253, 253, 253);" class=""><br class=""></div><div \
style="margin: 0px; font-size: 11px; font-family: Menlo; background-color: rgb(253, \
253, 253);" class=""><br class=""></div><div style="margin: 0px; font-size: 11px; \
font-family: Menlo; background-color: rgb(253, 253, 253);" class=""><br \
class=""></div><div class=""><br class=""></div></body></html>



_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic