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

📄 file.c

📁 Linux 平台下
💻 C
📖 第 1 页 / 共 2 页
字号:
              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 + -