从apache扒出来一段string代码
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。
http://blog.devep.net/virushuo/2007/02/24/apache_mwa_string_for_c.html
c 里面字符串处理很讨厌,比如要append东西,就要memset,memcpy,malloc来回折腾,很麻烦。
我问tiny,这种东西大家每次用都自己写一个,难道就没有一个通用的吗?都这么多年了...tiny说都是自己写的。说的也没错,其实这东西就是基本功,应该顺手就能写一个linebuffer出来。但是他还是麻烦啊。字符串处理是内存相关的,大概是c最难掌握的技巧之一了。
我觉得C++比C好学的原因之一就是C++的std下面提供了很好的字符串类。
翻了几个著名的opensource项目,最后我从apache httpd里面扒出来这几个字符串处理函数,还不错。用起来也很简单。
就这样就可以:
MWA_STRING string;
apr_pool_t *pool;
init_string(&string, pool);
append_string(&string,"1111",0);
append_string(&string,"2222",0);
printf("%s",string.data);
用append往上增加字符串。
代码在:
http://blog.devep.net/virushuo/2007/02/24/mwastring.c
http://blog.devep.net/virushuo/2007/02/24/mwastring.h
update :
令狐虫 提醒,这个模块是mod_ WebAuth的一部分。他说的是对的。我是从apr_pool_t开始扒的,故有此错误。谢谢提醒。
关于许可证的问题,我怎么记得mit/bsd都是非继承的许可证呢?应该不用再声明吧?




Comments
Apache httpd里没有找到这段代码,倒是用Google Code Search找到了一个WebAuth的项目,里面有这段代码。
http://www.google.com/codesearch?hl=zh-CN&q=+MWA_STRING+init_string+append_string+show:BxYRQ7S_W70:221mbnTaShQ:e292YnZ50U0&sa=N&cd=1&ct=rc&cs_p=http://webauth.stanford.edu/dist/webauth-3.5.3.tar.gz&cs_f=webauth-3.5.3/src/modules/webauth/webkdc.c#a0
这个项目采用的是MIT协议,所以你应该在你的代码前面加上MIT版权声明才对吧。
Posted by: 令狐虫 | February 26, 2007 3:25 PM
update :
令狐虫 提醒,这个模块是mod_ WebAuth的一部分。他说的是对的。我是从apr_pool_t开始扒的,故有此错误。谢谢提醒。
关于许可证的问题,我怎么记得mit/bsd都是非继承的许可证呢?应该不用再声明吧?
Posted by: virushuo | February 26, 2007 4:05 PM