On Tue, 25 Aug 2015 20:20:20 +0200 (CEST), Karl wrote: > Irrwahn: >> On Tue, 25 Aug 2015 19:24:17 +0200 (CEST), Karl wrote: >>> Tilt!: >>>> i wonder if we ever get to see such SSIDs from iwlist anyway - >>>> how is it supposed to print SSIDs that contain the zerobyte ... >>> >>> iwlib.c line 989..995: >>> /* Is it a non-ASCII character ??? */ >>> if(isescape || !isascii(*s) || iscntrl(*s)) >>> { >>> /* Escape */ >>> sprintf(d, "\\x%02X", *s); >>> d += 4; >>> } >> >> Thank you. One problem, though: >> Not a single version of the Wireless Tools for Linux sources I >> happened to stumble upon doing a quick internet search contains >> this snippet, or anything remotely like it. Care to share with us, >> where this originates? > > $ apt-get source wireless-tools > $ cd wireless-tools-30~pre9 > $ ls iw*.[ch] > iwconfig.c iwevent.c iwgetid.c iwlib.c iwlib.h iwlib-private.h iwlist.c > iwmulticall.c iwpriv.c iwspy.c > $ grep download debian/copyright > It was downloaded from: > http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html > $ > > > http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html > under "Wireless Tools latest versions": > /// > The main features of the latest beta is support for non-ASCII ESSIDs (such > as localised ESSID), support for displaying Scanning Capabilities, slightly > bigger scan buffer, fixing minor bug iwconfig parser and minor enhancement to > ifrename : > > Wireless Tools version 30-pre9 (beta) > /// > >> Or give a little more context, particularly >> how isescape is set? > > iwlib.c line 971..981: > /* Escape the escape to avoid ambiguity. > * We do a fast path test for performance reason. Compiler will > * optimise all that ;-) */ > if(*s == '\\') > { > /* Check if we would confuse it with an escape sequence */ > if((e-s) > 4 && (s[1] == 'x') > && (isxdigit(s[2])) && (isxdigit(s[3]))) > { > isescape = 1; > }
Thanks a lot, Karl! I was stupid enough to not simply apt-get the sources. I checked, it is exactly the function that is used when printing the scan results. That makes escaping for file system path purposes quite easy, as everything is already escaped, except the notorious '/'. however, that is already taken care of in my modified version of Ed's netman. Now, what about the consumers? I found out that wpa_supplicant can digest printf-style escaping, provided the quoted string is prefixed with 'P': # ssid: SSID (mandatory); network name in one of the optional formats: # - an ASCII string with double quotation # - a hex string (two characters per octet of SSID) # - a printf-escaped ASCII string P"<escaped string>" I was not able to find information on how ifup passes on the information from the wpa-ssid field. Assuming it is just handed down as is, the only change in netman would be to prefix the SSID with 'P'. -- Irrwahn _______________________________________________ Dng mailing list Dng@lists.dyne.org https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng