Development

OpenLDAP的内存泄漏

(最后修改: Development

今天发现了OpenLDAP client库的一个内存泄漏(每次连接会漏掉大约80字节),并提交了ITS patch(4441),不过我觉得这里面上锁上的还是有点问题的,至少逻辑不是很清楚。

参与评论

while(0)是干吗的?

(最后修改: Development

今天 renzhen 同学问起为什么很多宏都定义为 do { something… } while(0),我也顺便温习了一下。

简而言之:如果希望宏表现的和函数接近,就需要这样做。

阅读全文… ( 本文约 124 字,阅读大致需要 1 分钟 )

给csh增加了简体中文(GBK)支持

(最后修改: Development

对GBK的locale做了一些改动,使得其能够提供正确的字符宽度信息了。这样一来,csh就能够正确处理GBK的中文了。昨天还增加了正体(我们叫做繁体)中文对应的locale变化。

阅读全文… ( 本文约 119 字,阅读大致需要 1 分钟 )

bsd.port.mk: critical issue for RELENG_6

(最后修改: Development

Today I have submitted a PR which I have marked “critical”. bsd.port.mk does not do the right thing on RELENG_6 after the rcorder change, which will cause all ports installed rc.d scripts stop to function at system startup.

The PR can be accessed here: http://www.freebsd.org/cgi/query-pr.cgi?pr=93536

UPDATE(20060219): It seems that the problem is not related to this. I am still investigating what was happening.

UPDATE(20060220): Doug Barton has kindly provided information about the issue. It was because some nojail and mountcritlocal conflict. The issue can only appear when you are using jail(8).

参与评论

关于如何扩展复杂且难懂的C代码的一点经验谈

(最后修改: Development

有时,我们会希望扩展一些现有的C代码。这些代码可能经历了相当久的运行考验——它们至少目前工作起来没有问题——然而,它们可能存在各种各样的问题,比如:

  • 缺少注释。
  • 过分使用的goto语句。
  • 变量名不规范。
  • 逻辑复杂难懂。
  • 过分使用表达式赋值(if (foo = bar()) {})
  • 直接返回函数返回值(这是合法的,但会给增加功能带来困难)

要扩展这类代码是一件有挑战的事情。

阅读全文… ( 本文约 705 字,阅读大致需要 2 分钟 )

FreeBSD的uuid处理小问题

(最后修改: Development

似乎在处理><时,和 DCE 不太一样,改天写个test case看看。


Archived: trackbacks

生成UUID from 2006 Penguin, smashing time! on February 4, 2006 11:36 PM

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#include <stdio.h>
#include <uuid.h>
main() {
  uuid_t *uuid;
  char *s;
  uuid = (uuid_t*)malloc(sizeof(uuid_t));
  uuidgen(uuid,1);
  uuid_to_string(uuid,&s,NULL);
  printf("%s\\n",s);
}

一个很简单的生成UUID的例子。… Read More

参与评论