lighty 的生活

lighty 开发者博客

Glib 项目:它能编译……大部分

作为我将 lighttpd 移植到 glib 的持续、秘密工作的一部分,我至少可以说:它能编译了。

嗯,大部分是这样。核心部分确实能编译,并且 mod_staticfile 也基本完成。说是大部分,是因为我还没有决定如何处理配置文件。

那么,到目前为止已经完成了哪些工作

  • buffer.cbuffer.h 已被移除,并替换为 GString
  • array.c 已被移除,并替换为 GHashTableGPtrArray
  • data_…c 被移除时,array.h 也将消失
  • log.c 现在是 g_log_… 的一个封装

如你所见,这正在移除基础数据结构,并用 glib 风格的结构替换它们。

这不仅仅是简单的直接替换,因为这些结构使用了不同的字段名,并且有时含义略有不同。

一个例子是 GString 与 buffer 的比较

buffer {
  char *ptr;
  size_t used;
  size_t size;
};

GString {
  char *str;
  size_t len;
  size_t allocated_len;
};

虽然 strptr,以及 allocated_lensize 匹配,但 usedlen 之间相差一个字节(used 包含空字节 NUL,而 len 不包含)。

这项枯燥工作的一个副作用是,代码量正在一点点地减少。

看到旧的、有时甚至是糟糕的代码消失是另一个不错的副作用。就像 log_error_write() 调用……天呐……