⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dir.c

📁 Linux 平台下
💻 C
📖 第 1 页 / 共 2 页
字号:
              p->count=p->count+1;              struct node *q;              q=(struct node *)malloc(sizeof(struct node));              q->count=0;                 memset(q->link,'0',sizeof(q->link));                 memset(q->path,'\0',sizeof(q->path));              memset(path,'\0',sizeof(path));              strcpy(path,p->path);  //存到数组中              strcat(path,"/");              strcat(path,dirp->d_name);              strcpy(q->path,path);             // strcpy(q->buf,p->buf);              p->link[p->count]=q;              //p->link[]              buildtree(q);                                }                                  }            }void compare(struct node *refroot,struct node*refbackup){                int i,j;         struct stat buffer;         struct dirent *dirp;         struct node *p=refroot;         struct node *q=refbackup;         for(i=1;i<=q->count;i++)                      {             int flag=0;          //   printf("backup:%s\n",q->link[i]->path);             for(j=1;j<=p->count;j++)                                   {               //  printf("root:%s\n",p->link[j]->path);                 if(strcmp(p->link[j]->path ,q->link[i]->path)==0&&q->link[i]->buf.st_mode==p->link[j]->buf.st_mode)                                           {                  flag=1;                 break;                                           }                                   }                               // 判断文件存在             if(flag==1)                                {                 if(S_ISREG(q->link[i]->buf.st_mode))                                            {                 //  printf("%s\n",q->link[i]->path);                   if(p->link[j]->buf.st_mtime != q->link[i]->buf.st_mtime ) //文件修改时间不同                                                  {                     memset(buff,'\0',sizeof(buff));                     tm_ptr=localtime(&q->link[i]->buf.st_mtime);                     strftime(buff,sizeof(buff),"%b %e %T/%Y",tm_ptr);                     printf("Modify Files: %s   Modify Time:%s\n",q->link[i]->path,buff);                     memset(logfile,'\0',sizeof(logfile));                      strcpy(logfile,"Modify Files: ");                     strcat(logfile,q->link[i]->path);                     strcat(logfile," Modify Time: ");                     strcat(logfile,buff);                     strcat(logfile,"\n");                    // fputs(logfile,fp2); //写入日志文件                     buflen = strlen(logfile);
                 if((strcmp(type,"b")==0 )&&(q->link[i]->filetype==2))//用户只监视可执行文件文件
                                                 {     //写入socket中                      fputs(logfile,fp2);                       if (write(sockfd, logfile, buflen) != buflen) {
                      perror("write error");
                                                       }                                                 }                  else if((strcmp(type,"a")==0 )&&(q->link[i]->filetype==1)) //用户只监视图形文件
                                               {                      fputs(logfile,fp2);                       if (write(sockfd, logfile, buflen) != buflen) {
                      perror("write error");
                                                       }                                                 }                  else if(((strcmp(type,"c")==0 )&&(q->link[i]->filetype==1))||((strcmp(type,"c")==0 )&&(q->link[i]->filetype==2))) //监视二者
                                                 {                      fputs(logfile,fp2);                       if (write(sockfd, logfile, buflen) != buflen) {
                      perror("write error");
                                                       }                                                 }                  else if(strcmp(type,"d")==0 ) //监视全部
                                                 {                      fputs(logfile,fp2);                       if (write(sockfd, logfile, buflen) != buflen) {
                      perror("write error");
                                                       }                                                 }                                               }                                           }                 else if(S_ISDIR(q->link[i]->buf.st_mode))                                           {                    compare(p->link[j],q->link[i]);                                             }                                         }           else                              {                   //  printf("new file\n");  //添加文件                     if(S_ISREG(q->link[i]->buf.st_mode)){                     memset(buff,'\0',sizeof(buff));                     tm_ptr=localtime(&q->link[i]->buf.st_mtime);                     strftime(buff,sizeof(buff),"%b %e %T/%Y",tm_ptr);                     printf("ADD File: %s   ADD Time:%s\n",q->link[i]->path,buff);                     memset(logfile,'\0',sizeof(logfile));                      strcpy(logfile,"ADD File: ");                     strcat(logfile,q->link[i]->path);                     strcat(logfile," ADD Time: ");                     strcat(logfile,buff);                     strcat(logfile,"\n");                     buflen=strlen(logfile);                  if((strcmp(type,"b")==0 )&&(q->link[i]->filetype==2))
                                                 {                      fputs(logfile,fp2);                      if (write(sockfd, logfile, buflen) != buflen) {
                      perror("write error");
                                                       }                                                 }                  else if((strcmp(type,"a")==0 )&&(q->link[i]->filetype==1))
                                                 {                      fputs(logfile,fp2);                      if (write(sockfd, logfile, buflen) != buflen) {
                      perror("write error");
                                                       }                                                 }                  else if(((strcmp(type,"c")==0 )&&(q->link[i]->filetype==1))||((strcmp(type,"c")==0 )&&(q->link[i]->filetype==2)))
                                                 {                      fputs(logfile,fp2);                      if (write(sockfd, logfile, buflen) != buflen) {
                      perror("write error");
                                                       }                                                 }                  else if(strcmp(type,"d")==0 )
                                                 {                      fputs(logfile,fp2);                      if (write(sockfd, logfile, buflen) != buflen) {
                      perror("write error");
                                                       }                                                 }                                               }                    else if(S_ISDIR(q->link[i]->buf.st_mode)){ //文件夹添加                     memset(buff,'\0',sizeof(buff));                     tm_ptr=localtime(&q->link[i]->buf.st_mtime); //时间由时间戳转化                     strftime(buff,sizeof(buff),"%b %e %T/%Y",tm_ptr);                     printf("ADD File Folder: %s   ADD Time:%s\n",q->link[i]->path,buff);                     memset(logfile,'\0',sizeof(logfile));                      strcpy(logfile,"ADD File Folder: ");                     strcat(logfile,q->link[i]->path);                     strcat(logfile," ADD Time: ");                     strcat(logfile,buff);                     strcat(logfile,"\n");                     fputs(logfile,fp2);                      buflen = strlen(logfile);
                  if (write(sockfd, logfile, buflen) != buflen) {
                      perror("write error");
                                                       }                                                     }                           }                  }}void cmp(struct node *refroot,struct node*refbackup) //删除文件{        int i,j;        struct node *p=refroot;        struct node *q=refbackup;         for(i=1;i<=p->count;i++)                      {             int flag=0;             for(j=1;j<=q->count;j++)                                   {                if(strcmp(p->link[i]->path ,q->link[j]->path)==0&&q->link[j]->buf.st_mode==p->link[i]->buf.st_mode)                                           {                  flag=1;                 break;                                           }                                   }             if(flag==1)                                 {                      if(S_ISDIR(p->link[i]->buf.st_mode))                                           {                    compare(p->link[i],q->link[j]);                                             }                                                                             }             else                                {                  if(S_ISREG(p->link[i]->buf.st_mode)){                     memset(buff,'\0',sizeof(buff));                     time_t now;                     time(&now);                     tm_ptr=localtime(&now);                     strftime(buff,sizeof(buff),"%b %e %T/%Y",tm_ptr);                     printf("Delete File: %s   Del Time:%s\n",p->link[i]->path,buff);                     memset(logfile,'\0',sizeof(logfile));                      strcpy(logfile,"Delete File: ");                     strcat(logfile,p->link[i]->path);                     strcat(logfile," Del Time: ");                     strcat(logfile,buff);                     strcat(logfile,"\n");                   //  fputs(logfile,fp2);                      buflen = strlen(logfile);
                   if((strcmp(type,"b")==0 )&&(p->link[i]->filetype==2))
                                                 {                              fputs(logfile,fp2);                       if (write(sockfd, logfile, buflen) != buflen) {
                      perror("write error");
                                                       }                                                 }                   else if((strcmp(type,"a")==0 )&&(p->link[i]->filetype==1))
                                                 {                              fputs(logfile,fp2);                       if (write(sockfd, logfile, buflen) != buflen) {
                      perror("write error");
                                                       }                                                 }                 else if(((strcmp(type,"c")==0 )&&(p->link[i]->filetype==1))||((strcmp(type,"c")==0 )&&(p->link[i]->filetype==2)))
                                                 {                              fputs(logfile,fp2);                       if (write(sockfd, logfile, buflen) != buflen) {
                      perror("write error");
                                                       }                                                 }                   else if(strcmp(type,"d")==0 )
                 {     fputs(logfile,fp2);                       if (write(sockfd, logfile, buflen) != buflen) {
                      perror("write error");
                                                       }                                                 }                                                   }                    else if(S_ISDIR(p->link[i]->buf.st_mode)){ //文件夹删除                     memset(buff,'\0',sizeof(buff));                     time_t now;                     time(&now);                     tm_ptr=localtime(&now);                     strftime(buff,sizeof(buff),"%b %e %T/%Y",tm_ptr);                     printf("Delete File Folder: %s   Del Time:%s\n",p->link[i]->path,buff);                     memset(logfile,'\0',sizeof(logfile));                      strcpy(logfile,"Delete File Folder: ");                     strcat(logfile,p->link[i]->path);                     strcat(logfile," Delete Time: ");                     strcat(logfile,buff);                     strcat(logfile,"\n");                     fputs(logfile,fp2);                      buflen = strlen(logfile);
                  if (write(sockfd, logfile, buflen) != buflen) {
                      perror("write error");
                                                       }                                                     }                                  }                  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -