发现freebsd 6.2的rpcgen的2个bug

重现方法:

1、写一个简单的.x文件,保存为my.x
2、运行命令 /usr/bin/rpcgen -CMm -IP my.x -o my.c && /usr/bin/rpcgen -CMh -IP my.x -o my.h

该命令的目的是为所写的.x文件生成合适的C/C++代码。但是它生成的代码有几个问题

BUGS:

1、某头文件位置错误

#ifdef __cplusplus
#include /* getdtablesize, open */
#endif /* __cplusplus */

sysent.h这个文件在freebsd中不是在/usr/include下,而是在/usr/include/sys/include下。所以此处最好是

#ifdef __cplusplus
#include <sys/sysent.h> /* getdtablesize, open */
#endif /* __cplusplus */

2、大量的使用了solaris的mutex

mutex_t _svcstate_lock;
mutex_lock(&_svcstate_lock); (类似于此的代码多次出现)

编译的时候会提示找不到mutex_t的定义。此处应该为

pthread_mutex_t _svcstate_lock;
pthread_mutex_lock(&_svcstate_lock);

此博客中的热门博文

少写代码,多读别人写的代码

在windows下使用llvm+clang

tensorflow distributed runtime初窥