urlunesc.c
来自「这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易」· C语言 代码 · 共 59 行
C
59 行
#include <u.h>#include <libc.h>#include <bin.h>#include <httpd.h>/* go from url with escaped utf to utf */char *hurlunesc(HConnect *cc, char *s){ char *t, *v, *u; Rune r; int c, n; /* unescape */ u = halloc(cc, strlen(s)+1); for(t = u; c = *s; s++){ if(c == '%'){ n = s[1]; if(n >= '0' && n <= '9') n = n - '0'; else if(n >= 'A' && n <= 'F') n = n - 'A' + 10; else if(n >= 'a' && n <= 'f') n = n - 'a' + 10; else break; r = n; n = s[2]; if(n >= '0' && n <= '9') n = n - '0'; else if(n >= 'A' && n <= 'F') n = n - 'A' + 10; else if(n >= 'a' && n <= 'f') n = n - 'a' + 10; else break; s += 2; c = (r<<4)+n; } *t++ = c; } *t = '\0'; /* convert to valid utf */ v = halloc(cc, UTFmax*strlen(u) + 1); s = u; t = v; while(*s){ /* in decoding error, assume latin1 */ if((n=chartorune(&r, s)) == 1 && r == Runeerror) r = (uchar)*s; s += n; t += runetochar(t, &r); } *t = '\0'; return v;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?