|
我想用一个程序管理LFS/BLFS的软件包, 但又找不到很合适的, 决定用一个最简的C语言程序来处理.
这个程序从标准输入读入文件名, 然后根据文件名获取文件类型, 文件模式, 最后修改时间, 大小, 和md5或sha256校验码.
文件类型可以为 'D', 'S', 或'F'
'D'表示目录, 'S'表示链接, 'F'表示其他文件.
使用时将包编译安装到一个临时目录, 然后在临时目录里用
find | C程序名 > 数据库文件
我写了一个程序头, 希望那位有时间能完善里面的get_file_info函数, 这个函数是包管理器的基本.
示例程序如下:
- #include "stdio.h"
- #include "string.h"
- #define MAX_NAME_LEN (4096)
- void get_file_info(char* csFileName);
- int main()
- {
- char *pRet=NULL;
- char csName[MAX_NAME_LEN];
- int count=0;
- int len;
- while(1)
- {
- pRet=fgets(csName, MAX_NAME_LEN, stdin);
- if(NULL == pRet)
- break;
- //remove \n
- len=strlen(csName);
- if(csName[len-1] == '\n') csName[len-1]=0;
- //to stdout.
- get_file_info(csName);
- count++;
- }
- return count;
- }
- //routine for get file information, such as file tye, file Last Modify Time,
- //file mode, file size, file md5 checksum, and output to stdout.
- // file type: 'D' Directory. 'S' Symbol link. 'F' -- Normal file.
- // if file type is 'F', then output name, mode, LMT, size, md5checksum.
- // if 'D', output name, mode, LMT
- // if 'S', output name, mode, LMT, link destination.
- void get_file_info(char* csFileName)
- {
- unsigned int iTestSize=3000;
- char cTestType='F';
- char *csTestSum="80a8b5938123499ad";
- char *csTestMode="0777";
- char *csLMT="2008-09-11 19:11:36";
- //type 'F' , name, mode, LMT, size, cksum
- printf("%C,%s,%s,%s,%d,%s\n", 'F', csFileName,
- csTestMode, csLMT, iTestSize, csTestSum);
- }
复制代码
怎么贴能保持缩进?! |
|