资源简介
这是自己写的ls -R函数,实现了分栏、隐藏文件隐藏、上色等功能,没有排序。用的时候根据输入不同有两种功能 ls 和ls -R 、用的时候只要再加一个主函数就可以了。
代码片段和文件信息
#include
#include
#include
#include
#include
void do_ls(char[]int);
void dostat(char *char *);
void show_file_info( char * struct stat *);
void mode_to_letters( int char [] );
char *uid_to_name( uid_t );
char *gid_to_name( gid_t );
lsR(int ac char *av[])
{
int R_flag = 0;
int anyfiles = 0;
while ( --ac ){
if ( strcmp(“-R“ *++av) == 0 )
R_flag = 1;
else {
do_ls( *av R_flag );
anyfiles = 1;
}
}
if ( !anyfiles )
do_ls(“.“ R_flag);
}
void do_ls( char dirname[] int subdirs )
{
DIR *dir_ptr;
struct dirent *direntp;
char *fullpath;
if ( ( dir_ptr = opendir( dirname ) ) == NULL ){
fprintf(stderr“ls2: cannot open %s\n“ dirname);
return;
}
printf(“%s:\n“ dirname);
fullpath = (char *)malloc(strlen(dirname) + 1 + MAXNAMLEN + 1);
while ( ( direntp = readdir( dir_ptr ) ) != NULL )
{
char cname[20];
strcpy(cnamedirentp->d_name);
if(cname[0]!=‘.‘)
{
sprintf(fullpath“%s/%s“dirnamedirentp->d_name);
dostat( fullpath direntp->d_name );
}
}
if ( subdirs ){
rewinddir(dir_ptr);
while ( ( direntp = readdir( dir_ptr ) ) != NULL ){
if(direntp->d_name[0]==‘.‘)
continue;
sprintf(fullpath“%s/%s“dirnamedirentp->d_name);
if ( isadir1(fullpath) ){
putchar(‘\n‘);
do_ls( fullpath subdirs );
}
}
}
closedir(dir_ptr);
free(fullpath);
}
void dostat( char *fullpath char *filename )
{
struct stat info;
if ( lstat(fullpath &info) == -1 )
perror(filename);
else
show_file_info(filename &info);
}
void show_file_info( char *filename struct stat *info_p )
{
char *uid_to_name() *ctime() *gid_to_name() *filemode();
void mode_to_letters();
char modestr[11];
mode_to_letters( info_p->st_mode modestr );
printf( “%s“ modestr );
printf( “%4d “ (int) info_p->st_nlink);
printf( “%-8s “ uid_to_name(info_p->st_uid) );
printf( “%-8s “ gid_to_name(info_p->st_gid) );
printf( “%8ld “ (long)info_p->st_size);
- 上一篇:编译原理课程设计for循环LR法三元式
- 下一篇:飞跃手册汇总.rar
相关资源
- 基于混沌序列的LSB水印算法
- ffmpeg转码为hls代码
- 《迈向5G-C-RAN:需求、架构与挑战》白
- Linux工程模板
- Linux ntpclient代码
- 读者写者问题linux实现代码
- 算身份证校验码.xls
- kali Linux全套视频加工具学习资料
- linux黑客编程之路
- linux下面使用SIM300模块发送GPRS短信的
- unix-linux编程实践教程习题解答及代码
- MD5EditTools,MD5修改工具
- linuxubuntu下ffmpeg + alsa 的音频播放器
- linux 360wifi3代驱动
- gt911触摸屏驱动程序
- LMS与RLS自适应滤波算法性能比较
- GPS-RTK技术在矿山线路测量中的应用分
- GPS-RTK测绘技术在地质勘察测绘中的应
- GPS-RTK技术在矿山测量中的应用研究
- GPS-RTK在矿区沉降监测中的应用
- GPS-RTK在山区开采沉陷中的应用研究
- GPS-RTK在海洋水深测量中的应用
- GPS-RTK在线路测量中的应用研究
- SSH Secure远程链接工具
- node-red .zip
- 复方浙贝颗粒联合化疗对LSC表面标志
-
.NET fr
amework 3.5 Microsoft Chart Controls - lt;mathgt; mi O / mi mo/ mo mn 4 / mn mo/ mo l
- 龙书《编译原理》(Compilers:Principle
- 良哥独创Linux deepin电脑系统装回wind
评论
共有 条评论