Exemplo n.º 1
0
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]);
}
Exemplo n.º 2
0
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]);
}
Exemplo n.º 3
0
/**************************************************************************************************
*    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

        }

    }

}
Exemplo n.º 4
0
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
}
Exemplo n.º 5
0
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;
}}}