|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2000-09-05 14:31 UTC] gert at gerts dot net
The key/value pairs that libnsl's yp_first/yp_next return contain
a trailing NEWLINE as per NIS specs. These NEWLINEs are
not chopped off before returning the key/value pair to the users's PHP
code. Hence you end up with newlines in PHP hashes.
Below is the context diff for the fix.
regards,
Gert
*** yp.c.orig Mon Jun 5 21:47:45 2000
--- yp.c Tue Sep 5 19:37:54 2000
***************
*** 151,156 ****
--- 151,158 ----
RETURN_FALSE;
}
array_init(return_value);
+ outkey[outkeylen] = 0;
+ outval[outvallen] = 0;
add_assoc_string(return_value,"key",outkey,1);
add_assoc_string(return_value,"value",outval,1);
}
***************
*** 175,180 ****
--- 177,184 ----
RETURN_FALSE;
}
+ outkey[outkeylen] = 0;
+ outval[outvallen] = 0;
array_init(return_value);
add_assoc_string(return_value,outkey,outval,1);
}
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Wed Oct 29 08:00:01 2025 UTC |
Reaction to [2001-03-18 17:05:11] ohrn@php.net's comment: You're wrong in saying that having a newline at the end of a key/value pair is dependent on the data you put in the map. Sure, if you put newlines in the map you'll bound to get them out; BUT there's allways an extra newline added. From the SunOS 7 and 8 manuals (ypclnt(3N)): [..] For each outkey and outval, two extra bytes of memory are allocated at the end that contain NEWLINE and null, respectively, but these two bytes are not reflected in outkeylen or outvallen . [..] Meaning for keys x and value y, you'll get: outkeylen = 1; outvallen = 1; outkey[] = { 0x78, 0x0a, 0x00 }; outval[] = { 0x79, 0x0a, 0x00 }; Which requires chopping off the newline in case you must use the key and value as a C string. The latter is precisely what php needs/does, the former was missing from the glue code. Proof me wrong ;-). I've observed the original code fail... Regards Gert