bool serveFile(const string& URI, string& contentType, string& content) const { if (URI.length() == 0) return false; string filename = BASE_DIR + URI; if (URI[URI.length() - 1] == '/') filename += DEFAULT_FILE; LogDebug("read file: %s", filename.c_str()); auto deleter = [](FILE *p) {fclose(p); }; unique_ptr<FILE, decltype(deleter)> pFile(fopen(filename.c_str(), "r"), deleter); if (pFile == nullptr) return false; contentType = getContentType(getFileSuffix(filename)); content.clear(); char buff[READ_FILE_BUFFER_SIZE]; fgets(buff, READ_FILE_BUFFER_SIZE - 1, pFile.get()); while (! feof(pFile.get())) { content += buff; fgets(buff, READ_FILE_BUFFER_SIZE - 1, pFile.get()); } return true; }
int filenameMap(char *inName,char *outName,Mode workState){ char suffix[FILE_NAME_LEN]; char *ret; switch (workState) { case COMPRESS: ret=getFileSuffix(inName,suffix,FILE_NAME_LEN); if(ret ==NULL){ //find no suffix strcpy(outName,inName); strcat(outName,".wz"); return 0; } //check suffix if(strcmp(suffix,".tar")==0){ strcpy(outName,inName); ret=strrchr(outName,'.'); *ret='\0'; strcat(outName,".twz"); return 0; }else{ strcpy(outName,inName); strcat(outName,".wz"); return 0; } break; case DECPRESS: ret=getFileSuffix(inName,suffix,FILE_NAME_LEN); if ( ret==NULL) { printf("Decompress: %s may be error wzip name \n", inName); return ERR_FILE_NAME; } //may have suffix if(strcmp(suffix,".wz")==0){ strcpy(outName,inName); ret=strrchr(outName,'.'); *ret=0; return 0; }else if(strcmp(suffix,".twz")==0){ strcpy(outName,inName); ret=strrchr(outName,'.'); *ret=0; strcat(outName,".tar"); return 0; }else{ printf("Decompress:%s may be error wzip name \n", inName); return ERR_FILE_NAME; } break; default: printf("unknown workState\n"); return ERR_PARAMETER; } }