void cmd_mv(int argc, char **argv) { OPT_HELP_NEW(_("Rename or move a file."), "mv [options] <src> <dest>", NULL); minargs(optind + 1); maxargs(optind + 1); need_connected(); need_loggedin(); ftp_set_tmp_verbosity(vbError); if(ftp_rename(argv[optind], argv[optind + 1]) == 0) printf("%s -> %s\n", argv[optind], argv[optind + 1]); }
void cmd_mv(int argc, char **argv) { OPT_HELP("Rename or move a file. Usage:\n" " mv [options] <src> <dest>\n" "Options:\n" " -h, --help show this help\n"); minargs(optind + 1); maxargs(optind + 1); need_connected(); need_loggedin(); ftp_set_tmp_verbosity(vbError); if(ftp_rename(argv[optind], argv[optind + 1]) == 0) printf("%s -> %s\n", argv[optind], argv[optind + 1]); }
/************************************************************************************************** * function : upload product files to product&service center ; * para : {void} * * return : {void} * * history : {2013.7.25 wujun} frist create; **************************************************************************************************/ void upload() { int i,j; char *filename,tempFilename; char *analysisCenterPath,*tempAnalysisCenterPath; char *productCenterPath, *tempProductCenterPath; int uploadState = 0; int ftperror = 0;//ftp relative error code int sockfd = 0; int len = 0; //downlaod starting time and end time char startTime[100] = {0}; char endTime[100] = {0}; time_t timer; while(1) { sleep(1); UploadNode * p,*p1; p = uploadList->next;//temporary variable always points to uploadList head pointer. p1 = uploadList; printf("upload..12.\n"); display(); //to traverse the upload task list, check whether there are some upload task or not. while( p!= NULL ) { printf("upload...\n"); sem_p(giSemUpload);//lock len = strlen(p->filename) + 1; filename = malloc(sizeof(char)*len); memset(filename,0,len); strcpy(filename, p->filename); len += strlen(".inmp"); tempFilename = malloc(sizeof(char)*len); memset(filename,0,len); sprintf(tempFilename,"%s%s",p->filename, ".inmp"); len = strlen(filename) + strlen(p->analysisCenterPath) + 1; analysisCenterPath = malloc(sizeof(char)*len); memset(analysisCenterPath,0,len); sprintf(analysisCenterPath,"%s%s",p->analysisCenterPath,filename); len = strlen(tempFilename) + strlen(analysisCenterPath) + 1; tempAnalysisCenterPath = malloc(sizeof(char)*len); memset(tempAnalysisCenterPath,0,len); sprintf(tempAnalysisCenterPath,"%s%s",p->analysisCenterPath,tempFilename); len = strlen(p->filename) + strlen(p->productCenterPath) + 1; productCenterPath = malloc(sizeof(char)*len); memset(productCenterPath,0,len); sprintf(productCenterPath,"%s%s",p->productCenterPath,p->filename); len = strlen(tempFilename) + strlen(p->productCenterPath) + 1; tempProductCenterPath = malloc(sizeof(char)*len); memset(tempProductCenterPath,0,len); sprintf(tempProductCenterPath,"%s%s",p->productCenterPath,tempFilename); uploadState = p->state; sem_v(giSemUpload);//unlock if( (uploadState == UPLOAD_FILE_EXIST) || (uploadState == UPLOAD_FILE_UNKNOWN) ) { //pthread_mutex_unlock(&uploadMutex);//unlock //we have three times to try to connect to ftp server ,if failed. Otherwise send network error. int conncectTimes = 0; while((sockfd = connectFtpServer(p->server->ip, p->server->port, p->server->username, p->server->passwd)) <= FTP_CONNECT_FAILED_FLAG) { if( MAX_CONNECT_TIMES <= ++conncectTimes ) { //to recod failed connnection time timer =time(NULL); memset(startTime, 0, 100); strftime( startTime, sizeof(startTime), "%Y-%m-%d %T",localtime(&timer) ); //add event log; sem_p(giSemLog);//lock addEventLog(UPLOAD_CONNNET_FAILED, filename, startTime,""); sem_v(giSemLog);//unlock #ifdef DEBUG printf("connect error.\n"); #endif break; } //delay some time and connect ftp again. //delay(); } if( sockfd > FTP_CONNECT_FAILED_FLAG ) { sem_p(giSemUpload);//lock p->state = UPLOAD_FILE_UPLOADING;//uploading state sem_v(&giSemUpload);//unlock #ifdef DEBUG printf("filename = %s,\nprefix%s\n",filename,analysisCenterPath); #endif // record starting-upload time timer =time(NULL); memset(startTime, 0, 100); strftime( startTime, sizeof(startTime), "%Y-%m-%d %T",localtime(&timer) ); /* * 1.check out whether the file's father dir do exist or not. * 2.if exist, then upload the specifed file; * 3.else, make dir and then upload the file; * 4.rename the file if upload it completely. */ ftp_mkdir(tempAnalysisCenterPath);//make sure the dir exists. ftperror = ftp_put(tempAnalysisCenterPath, tempProductCenterPath, sockfd); // record end-upload time timer =time(NULL); memset(endTime, 0, 100); strftime( endTime, sizeof(endTime), "%Y-%m-%d %T",localtime(&timer) ); //add log switch(ftperror) { case UPLOAD_CONNNET_FAILED: { sem_p(giSemLog);//lock addEventLog(L_UPLOAD_CONNNET_FAILED, filename, startTime,endTime); sem_v(giSemLog);//unlock sem_p(giSemUpload);//lock p->state = UPLOAD_FILE_UPLOAD_FAILED; sem_v(giSemUpload);//unlock break; } case UPLOAD_LOCAL_FILENAME_NULL: case UPLOAD_LOCAL_OPEN_ERROR: case UPLOAD_DATA_SOCKET_ERROR: case UPLOAD_PORT_MODE_ERROR: { sem_p(giSemLog);//lock addEventLog(L_UPLOAD_FAILED, filename, startTime,endTime); sem_v(giSemLog);//unlock sem_p(giSemUpload);//lock p->state = UPLOAD_FILE_UPLOAD_FAILED; sem_v(giSemUpload);//unlock break; } case UPLOAD_SUCCESS: { ftp_rename(tempProductCenterPath,productCenterPath);//if upload succsessfull, then rename the temporary file sem_p(giSemLog);//lock addEventLog(L_UPLOAD_SUCCESS, filename, startTime,endTime); sem_v(giSemLog);//unlock sem_p(giSemUpload);//lock p->state = UPLOAD_FILE_UPLOAD_SUCCESS; sem_v(giSemUpload);//unlock break; } default: break; } close(sockfd); } } else if((uploadState == UPLOAD_FILE_NONEXIST) || (uploadState == UPLOAD_FILE_UPLOAD_INTIME) || (uploadState == UPLOAD_FILE_UPLOAD_LATE)) { timer =time(NULL); memset(endTime, 0, 100); strftime( endTime, sizeof(endTime), "%Y-%m-%d %T",localtime(&timer) ); switch(uploadState) { case UPLOAD_FILE_NONEXIST: { sem_p(giSemLog);//lock addEventLog(L_UPLOAD_FILE_NOEXIST, filename, endTime,endTime); sem_v(giSemLog);//unlock break; } case UPLOAD_FILE_UPLOAD_INTIME: { sem_p(giSemLog);//lock addEventLog(L_UPLOAD_INTIME, filename, endTime,endTime); sem_v(giSemLog);//unlock break; } case UPLOAD_FILE_UPLOAD_LATE: { sem_p(giSemLog);//lock addEventLog(L_UPLOAD_LATE, filename, endTime,endTime); sem_v(giSemLog);//unlock break; } default: break; } sem_p(giSemUpload);//lock p1->next=p->next; ////freeUploadNode(p);//free(p); p=p1; sem_v(giSemUpload);//unlock } sem_p(giSemUpload);//lock p1=p; p=p->next; sem_v(giSemUpload);//lock } } }
void main(int argc, char *argv[]) { ifstream bcpInfile; // local import file holding records to bcp to x_import table int hndl; // file handle char szXfrFile[128]; // holds name of delimited import file char szTmpFile[128]; // holds name of renamed delimited import file char szXfrLocalFile[128]; // holds name of delimited import file with local dir prepended int intBcpCount; // number of rows bcp'd // Open import log and import error log files if ( !OpenLogFiles() ) return; if ( argc >= 7 ) szSystem = argv[7]; else szSystem = ""; // Check if user wants help or if incorrect args entered if ( !CheckArgs(argc, argv) ) return; // Create transfer filenames wsprintf(szXfrFile, "%s_cags.xfr", argv[7] ); wsprintf(szTmpFile, "%s_cags.yyy", argv[7] ); // Connect to database and init db structures if ( !DBConnect(argv[1], argv[2], argv[3]) ) return; // // Check if local wms_cags.xfr exists to BCP records into import table // wsprintf(szXfrLocalFile, "%s%s", "./transfer/", szXfrFile ); if ( FileSize(szXfrLocalFile) > -1 ) // file exists { // Open local wms_cags.xfr bcpInfile.open(szXfrLocalFile, ios::nocreate, filebuf::sh_none); if ( !bcpInfile.is_open() ) { // Failed open so get out and retry on next run errfile << ERROR_PREFIX << "failed to open bcp input file" << endl; return; } else { // Call bcp routines to move data from import file into x_import table // Note: If migrated to another RDBMS most changes will be to this function if ( (intBcpCount = BCPInRecords(bcpInfile, argv[7])) != -1 ) { // Delete local import file now that its records are in import table bcpInfile.close(); f_deletefile(szXfrLocalFile); logfile << INFO_PREFIX << "successfull BCP of " << intBcpCount << " records into import table" << endl; } else { // Failed bcp so don't delete and get out to retry on next run bcpInfile.close(); errfile << ERROR_PREFIX << "failed BCP of import file to import table" << endl; return; } } } else { if ( FileSize(szXfrLocalFile) == -1 ) logfile << WARNING_PREFIX << "no records to import from " << szXfrLocalFile << " this run" << endl; else errfile << ERROR_PREFIX << "error opening local import file " << szXfrLocalFile << endl; } // // Logon to ftp server to get remote wms_cags.xfr to be bcp'd next import run // hndl = ftp_login(argv[4], argv[5], argv[6], ""); if ( hndl == -1 ) { errfile << ERROR_PREFIX << "failed ftp_login" << endl; return; } // Set current remote transfer directory if ( ftp_cd(hndl, argv[8]) == -1 ) { errfile << ERROR_PREFIX << "failed ftp_cd to " << argv[8] << endl; return; } // Check for no left over records from prior import and new records to import if ( !ftp_exist(hndl, szTmpFile) && ftp_exist(hndl, szXfrFile) ) { // If so, then rename prior to ftp_get to prevent contention with remote site if ( ftp_rename(hndl, szXfrFile, szTmpFile) == -1 ) { // ftp_rename failed so just log message and try again next invocation errfile << ERROR_PREFIX << "failed ftp_remame of " << szXfrFile << " to " << szTmpFile << " will retry next run" << endl; return; } } // Check for either left over records or new records in tmp file to import if ( ftp_exist(hndl, szTmpFile) ) { // If so, then ftp them to local directory if ( ftp_get(hndl, szTmpFile, szXfrLocalFile) == -1 ) { // ftp_get failed so do nothing here and retry next invovation errfile << ERROR_PREFIX << "failed ftp_get of " << szTmpFile << " will retry next run" << endl; } else { if ( ftp_delete(hndl, szTmpFile) == -1 ) { // ftp_delete failed so delete local to prevent re-importing next invocation f_deletefile(szXfrLocalFile); errfile << ERROR_PREFIX << "failed ftp_delete of " << szTmpFile << endl; } else { // successfull FTP logfile << INFO_PREFIX << "successfull FTP from remote site to " << szXfrLocalFile << endl; } } } else logfile << WARNING_PREFIX << "no records to ftp from remote site this run" << endl; // Close opened objects if ( !logfile.is_open() ) logfile.close(); if ( !errfile.is_open() ) errfile.close(); dbexit(); // close database connection ftp_quit(hndl); // close ftp connection }
int interface_capture (SDL_Surface *screen, int w, int h) {{{ const char *extension[]={".jpeg",".png",".bmp"}; /* This function is called to take a picure from the cam * and save it to a file */ char *capture_filename; SDL_Surface *tmp_surface; struct stat file_stat; int file_size = -1; /* Get a free filename */ capture_filename = getNewFilename (Dump_Path(), Dump_Prefix(), extension [configuration.dump_mode]); if (NULL == capture_filename) return -1; /* Capture the image*/ tmp_surface = get_ImageSurface(screen, w, h); /* {{{ Write image */ { unsigned char *data; int i; unsigned char tmp; data = (unsigned char*)tmp_surface->pixels; if ( SDL_MUSTLOCK(screen) ) { if ( SDL_LockSurface(screen) < 0 ) { fprintf(stderr, "Can't lock screen: %s\n", SDL_GetError()); free (capture_filename); return -1; } } /* swap Red and blue */ for (i=0; i<tmp_surface->w*tmp_surface->h*3; i+=3) { tmp = data[i]; data[i] = data[i+2]; data[i+2] = tmp; } if ( SDL_MUSTLOCK (screen) ) { SDL_UnlockSurface (screen); } switch (configuration.dump_mode) { case 0: write_file_jpeg (capture_filename, (unsigned char*)tmp_surface->pixels, tmp_surface->w, tmp_surface->h); break; case 1: write_file_png (capture_filename, (unsigned char*)tmp_surface->pixels, (unsigned int)tmp_surface->w, (unsigned int)tmp_surface->h); break; case 2: SDL_SaveBMP(tmp_surface, capture_filename); break; default: fprintf(stderr, "Unsuported capture format.\n"); break; } } /* }}} */ SDL_FreeSurface(tmp_surface); // if (configuration.debug > 0) printf("Saved file: %s\n", capture_filename); /* {{{ FTP-Stuff */ if( configuration.ftp_host !=NULL && configuration.ftp_user !=NULL && configuration.ftp_pass !=NULL && configuration.ftp_file !=NULL ) { if (init_ftp (configuration.ftp_host, configuration.ftp_user, configuration.ftp_pass)) { if (configuration.debug > 0) printf ("Starte FTP Upload\n"); if (configuration.ftp_temp != NULL) { if (configuration.debug > 0) printf ("Using FTP Rename Method\n"); if (ftp_send (capture_filename, configuration.ftp_temp)) ftp_rename (configuration.ftp_temp, configuration.ftp_file); } else ftp_send (capture_filename, configuration.ftp_file); } } /* }}} */ if (!stat (capture_filename, &file_stat)) { file_size = file_stat.st_size; } free (capture_filename); return file_size; }}}