看板SetupBBS
标 题Maple-itoc内附fb2usr.c 我的最爱修正
发信站台大电机 Maxwell BBS (Tue May 4 15:53:47 2004)
转信站ptt!ctu-reader!ctu-peer!news.nctu!freebsd.ntu!bbs.ee.ntu!Maxwell
作者: tabris (Tabris) 看板: InstallBBS
标题: Maple-itoc内附fb2usr.c 我的最爱修正
时间: Tue May 4 18:11:13 2004
不到一百行的小小程式
希望对大家会有帮助...
http://vega.cs.tku.edu.tw/~u91193131/tour.c
/*
tour.c
解决Maple-itoc内附/src/util/tran/fb2usr转档後,
我的最爱无法使用的问题
By 淡江资工 黄兆选
(
[email protected])
2004/05/04
说明:
原来不能用是因为转档程式没有在
User home directory新增MF,gem这两个directory
於是我就新增一个新帐号,把新帐号的这两个directory copy出来
然後写程式把他copy到所有User directory
权限的部分,MF和gem是700,
MF之下的@MyFavorite是600,gem下所有的link都是700
使用方法:
1.用Maple-itoc新增一个新帐号,然後把他的
/MF/@MyFavorite和/gem整个目录copy到/home
2.执行此程式
tour /home/bbs/usr 2
/home/bbs/usr为你的bbs的usr directory
2的话指的是从usr开始算起,两层子目录
(这个在这边可以不管他,只管输入2就是了)
这个程式可以对资料夹做tour(和find一样)
稍微改一下就可以让他对特定目录的所有子目录做任何你想要做的动作
*/
#include<stdio.h>
#include<sys/types.h>
#include<dirent.h>
#include<stdlib.h>
int depth;
int tour(char current[],int l)
{
struct dirent *p;
DIR *d;
char c[256];
char tmp[512];
if((d=opendir(current))==NULL || l>=depth)
{
return 0;
}
l++;
strcpy(c,current);
while((p = readdir(d))!=NULL)
{
if(strcmp(".",p->d_name)!=0 && strcmp("..",p->d_name)!=0)
{
strcat(c,"/");
strcat(c,p->d_name);
if(l==depth)
{
printf("L:%d",l);
printf("%s\n",c);
// MF部分
strcpy(tmp,"mkdir ");
strcat(tmp,c);
strcat(tmp,"/MF");
printf("%s\n",tmp);
system(tmp);
strcpy(tmp,"chmod 700 ");
strcat(tmp,c);
strcat(tmp,"/MF");
printf("%s\n",tmp);
system(tmp);
strcpy(tmp,"cp /home/@MyFavorite ");
strcat(tmp,c);
strcat(tmp,"/MF/");
printf("%s\n",tmp);
system(tmp);
strcpy(tmp,"chmod 600 ");
strcat(tmp,c);
strcat(tmp,"/MF/*");
printf("%s\n",tmp);
system(tmp);
//gem部分
strcpy(tmp,"cp -R /home/gem ");
strcat(tmp,c);
strcat(tmp,"/");
printf("%s\n",tmp);
system(tmp);
strcpy(tmp,"chmod -R 700 ");
strcat(tmp,c);
strcat(tmp,"/gem");
printf("%s\n",tmp);
system(tmp);
strcpy(tmp,"chown -R bbs:bbs ");
strcat(tmp,c);
printf("%s\n\n",tmp);
system(tmp);
}
tour(c,l);
strcpy(c,current);
}
}
closedir(d);
}
int main(int argc, char *argv[])
{
if(argc!=3)
{
printf("Usage: dir <directory name> <depth>\n");
exit(0);
}
depth=atoi(argv[2]);
tour(argv[1],0);
return 0;
}
--
※ Origin: 台大电机 Maxwell 站 ◆ From: 61-229-169-241.dynamic.hinet.net
--
※ Origin: 台大电机 Maxwell 站 ◆ From: 61-229-169-241.dynamic.hinet.net