除了一个简单的字符串缓冲区的实现之外,这段代码还实现了一个可变大小的字符串数组 。它完成的是一个简单的接口,当您写完一个字符串以后,您可以标记它然后继续写下一个 。此外,这样会节约空间分配,并且将比较乱的代码组织到一起 。
完整的 IMAP 服务器的代码将在今年某个时间发布 。
清单 4. 定制的 IMAP 服务器一部分
#ifndef HOED_BUF_H;
#define HOED_BUF_H;
typedef struct {;
char *str
int size
int length
int str_start
int max_size
int n_strings
int size_strings
int *str_posn
char **str_set
} hoed_buf_t
#if;;__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4);
#define PRINTF(f, a);__attribute__((format (printf, f, a)));
#else;
#define PRINTF(f,a);
#endif;
extern hoed_buf_t *hoed_buf_alloc(int init_size, int max_size)
extern void hoed_buf_free(hoed_buf_t *)
extern void hoed_buf_reset(hoed_buf_t *)
extern void hoed_buf_new_string(hoed_buf_t *)
extern char **hoed_buf_get_set(hoed_buf_t *, int *n_string)
extern char *hoed_buf_put_char(hoed_buf_t *, char toadd)
extern char *hoed_buf_sprintf(hoed_buf_t *, const char *format,...);
PRINTF(2,3)
extern char *hoed_buf_strcat(hoed_buf_t *, const char *append)
extern char *hoed_buf_cat_sprintf(hoed_buf_t *, const char *format, ...);
PRINTF(2,3)
#endif /* HOED_BUF_H */;
称为杀手级的 Linux 应用程序
对Murray 来说,有两个杀手级的 Linux 应用程序:Emacs 和 Netscape Navigator 。“Emacs 或许是给人印象最深而且广为应用的基于 Linux 的应用程序”,他说 。“另一个是 Netscape Navigator 。有一次,我们要支持20多种 UNIX,我在 Linux 上完成了所有的工作” 。
他继续说,“有趣的是,基于 Linux 的应用程序可能运行于许多不同风格的 UNIX 系统上,甚至安装了 Cygwin 的 Windows 系统 。”
Linux 的未来如何?
当前,Murray 正在进行的 Linux 项目有好几个,从支持电子邮件、消息和共享数据库的分布式办公应用程序到使用标准工具的网络应用程序(标准工具包括:Apache/Tomcat, PHP, PostgreSQL, MySQL, 和 Linux) 。Murray 有他自己的公司专门为网络服务和网络应用提供主机服务 。
对Murray 来说,得益于 Linux 强大功能的应用程序的列表在不断地增长 。“有很多”,他说 。“Oracle, WebSphere, Apache, PostgresQL, MySQL, Cyrus IMAP... 这个列表很长而且在不断增长 。”
【资深Linux程序员的开发经验谈】对 Murray 来说,Linux 到此为止了 。“我们所有的服务器都运行 Linux;不管目标平台如何,我们主要的开发都在 Linux 上进行;我们把 Linux 推荐给用户来运行服务器应用程序”,他说 。“ Linux 快速发展的步伐,开放源代码组织对它的广泛支持,低廉的开发费用,如果把这些结合在一起,您就知道它是一个难以击败的平台” 。
推荐阅读
- 用Linux的dd命令简单破解加密软盘
- 如何共享两台Linux操作系统的根目录
- Linux操作操作两种常见启动故障解决方法
- Linux内核源代码的阅读及相关工具介绍
- Linux下无线上网设置方法
- Linux系统下架设CS服务器的完美方法
- 做一个好管家 Linux系统管理技巧大荟萃
- Linux下安装Realplayer不能播放启动问题
- 循序渐进学习Linux之教您软件如何配置
- 用SRP建立安全的Linux FTP服务器
