📄 common.c
字号:
#include "auto_cp.h"#include <stdio.h>#include <stdlib.h>#include <string.h>#include <netdb.h>#include <sys/types.h>#include <unistd.h>#include <sys/stat.h>#include <sys/utsname.h>#include <error.h>#include <dirent.h>#include <sys/stat.h>#include <sys/types.h>#define MAX_PATH_LENGTH 128#include <dirent.h>////获取某个目录下的所有文件的文件名//void get_dir_filename(char *path,char *result)//{// char ch,infile[50],outfile[50];// struct dirent *ptr; // DIR *dir;// // // dir=opendir(path);// while((ptr=readdir(dir))!=NULL)// {// //跳过'.'和'..'两个目录// if(ptr->d_name[0] == '.')// continue;// printf("%s is ready...\n",ptr->d_name);// sprintf(result,"%s\n%s",result,ptr->d_name);// }// closedir(dir);//}//get_file_length(char *filenname, off_t file_length)//{// struct stat buf;// // // stat( filenname, &buf);// return buf.st_size;//}int my_system(const char* pCmd, char* pResult, int size){ int fd[2]; int pid; int count; int left; char* p = 0; int maxlen; maxlen = size - 1; memset(pResult, 0, size); if(pipe(fd)) { printf("[my_system]:pipe error\n"); return -1; } if((pid = fork()) == 0) {// chile process int fd2[2]; if(pipe(fd2)) { printf("[my_system]:pipe2 error\n"); return -1; } close(1); dup2(fd2[1],1); close(fd[0]); close(fd2[1]); system(pCmd); system("echo aa"); read(fd2[0], pResult, maxlen); pResult[strlen(pResult)-1] = 0; write(fd[1], pResult, strlen(pResult)); close(fd2[0]); exit(0); } // parent process close(fd[1]); p = pResult; left = maxlen; while(count = read(fd[0], p, left)) { p += count; left -= count; if(left == 0) break; } pResult[strlen(pResult)-2] = 0; if (strlen(pResult) != 0) { pResult[strlen(pResult)-1] = 0; } close(fd[0]); return 0; } int logfile(char *log_string){ FILE *fp; struct tm db_time_new; char log_file_name[128]; time_t db_sec; time(&db_sec); memcpy(&db_time_new, localtime(&db_sec), sizeof(db_time_new)); sprintf(log_file_name,"%s%d-%d-%d.log",LOGFILE,db_time_new.tm_year+1900,db_time_new.tm_mon+1,db_time_new.tm_mday); if((fp=fopen(log_file_name,"a"))==NULL) { printf("[log] open %s fail\n!",LOGFILE); return -1; } else { if(fprintf(fp,"%d-%d-%d %d:%d:%d %s\n",db_time_new.tm_year+1900,db_time_new.tm_mon+1,db_time_new.tm_mday,db_time_new.tm_hour,db_time_new.tm_min,db_time_new.tm_sec,log_string)==-1) { return -1; } fflush(fp); } fclose(fp); }int IsFileExist(char *path){ if(!access(path, F_OK)) { return 1; } return 0;}int IsDirectoryExist(char * pathname){ DIR *pDir; if (NULL == (pDir = opendir(pathname))) { return -1; } else { closedir(pDir); return 0; }}/*Function:Get filename from path.Return:NULL*/void getfilename(char *path,char *filename){ char *p; int i; p=path; i=1; while(i>=0) { i=instr(p,"/"); p=p+i+1; } strcpy(filename,p);}/*Function:Get basepath from path.Return:NULL*/void getbasepath(char *path,char *basename){ char *p,*q,pp[256]; int i; strcpy(pp,path); p=pp; i=1; while(i>=0) { q=p; i=instr(p,"/"); p=p+i+1; } *q='\0'; strcpy(basename,pp);}int uppercase(char *prestr,char *str,int len){ int i; if(len<0) return -1; for(i=0;i<len;i++) { if(*(prestr+i)<='z'&&*(prestr+i)>='a') *(str+i)=*(prestr+i)+('A'-'a'); else *(str+i)=*(prestr+i); } *(str+i)='\0'; return 0;}int lowcase(char *prestr,char *str,int len){ int i; if(len<0) return -1; for(i=0;i<len;i++) { if(*(prestr+i)<='Z'&&*(prestr+i)>='A') *(str+i)=*(prestr+i)-('A'-'a'); else *(str+i)=*(prestr+i); } *(str+i)='\0'; return 0;}int mkdirs(char *dir){ char path[MAX_PATH_LENGTH]; char *p; strcpy(path, dir); p = path; if(!access(dir, F_OK)) { return 0; } for (p = strchr((p+1), '/'); p; p = strchr((p+1), '/')) { // p = strchr(dir, '/'); *p = '\0'; if(access(path, F_OK)) { /* create dir */ if (mkdir(path, 777)) return 1; } *p = '/'; } /* make sure last one got created */ if(access(dir, F_OK)) if (mkdir(dir, 777)) return 1; return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -