LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: swordhui

求助: 一个获取文件信息的C语言程序.

[复制链接]
 楼主| 发表于 2009-11-19 21:54:31 | 显示全部楼层
Sorry, 这两天做一个项目解决吃饭的问题
我研究一下
回复 支持 反对

使用道具 举报

发表于 2009-11-21 22:58:56 | 显示全部楼层
楼主终于冒泡了,还以为消失了呢,过两天出差。。。。痛苦
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-4-22 09:48:34 | 显示全部楼层

新需求设计

Pinkme005兄的代码运行良好,稍作修改已成为新包管理器的核心部件。

重新整理一下需求:
1. 生成列表
从stdin读入文件名和路径,获取信息,以csv格式输出到stdout. 信息包括类型,文件名,大小(bytes),权限,uid,gid,最后修改时间,md5sum,可选的Sha256sum
文件名要去掉开始的".", 如输入为"./var/test.txt", 记录为"/var/test.txt", 但文件信息仍从"./var/test.txt"获取.
例如:

  1. D,/var/test,4096,0664,0,0,121768945
  2. F,/var/test/a.txt,115,0664,0,0,121768945,da8609e9cd838f5359970d6fe31d7dff
  3. L,/var/test/b,txt,8,0664,0,0,121768945
复制代码

每个文件一行,目录和链接无校验.
无参数时进入此模式



2. 打印列表内容
按顺序打印类型 大小 文件名即可
大小8字节右对齐
目录输出为'd', 链接输出为'l', 文件输出空格即可' '

-l 参数进入此模式

3. 判断某个文件是否在列表中
用法: -e  列表中文件路径 csv文件
返回0表示存在,1表示csv文件不存在,2表示Csv格式错误,3表示文件不在Csv列表中

4. 拷贝列表文件到根目录
-i csv文件
从当前路径拷贝Csv列表中文件到根目录
如果根目录文件已存在,先Unlink

5. 校验列表
-c csv文件
校验列表中文件
对目录和链接,只校验类型,权限,pid,uid
对文件,进行全校验,如果有Sha256sum也要校验
成功返回0, 其他表示错误.

6. 删除列表中文件
-d csv文件
使用Unlink删除列表中文件
-d 和-i 可以联合操作,实现升级。如:
-d v1.csv -i v2.csv
先删掉所有V1.csv中的文件,然后从当前目录拷贝V2.csv中的文件.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表