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

📄 .#webcam.c.1.36

📁 camE 1.9 for Linux - camE is an imlib2 webcam grabber, annotator, and uploader.
💻 36
📖 第 1 页 / 共 2 页
字号:
   curl_easy_setopt(curl_handle, CURLOPT_NOPROGRESS, 1);   /* shut up completely */   if (ftp_debug)      curl_easy_setopt(curl_handle, CURLOPT_VERBOSE, 1);   else      curl_easy_setopt(curl_handle, CURLOPT_MUTE, 1);   curl_easy_setopt(curl_handle, CURLOPT_POSTQUOTE, post_commands);   curl_easy_setopt(curl_handle, CURLOPT_UPLOAD, 1);   if (!ftp_passive)      curl_easy_setopt(curl_handle, CURLOPT_FTPPORT, ftp_pasvmode);   /* get it! */   ret = curl_easy_perform(curl_handle);   /* TODO check error */   if (ret)   {      fprintf(stderr, "\ncamE: error sending via ftp: ");      log("EEEE error: ");      switch (ret)      {        case CURLE_URL_MALFORMAT:           fprintf(stderr, "Badly formatted ftp host or directory\n");           log("Badly formatted ftp host or directory\n");           break;        case CURLE_URL_MALFORMAT_USER:           fprintf(stderr, "Badly formatted ftp username\n");           log("Badly formatted ftp username\n");           break;        case CURLE_COULDNT_RESOLVE_PROXY:           fprintf(stderr, "Couldn't resolve proxy\n");           log("Couldn't resolve proxy\n");           break;        case CURLE_COULDNT_RESOLVE_HOST:           fprintf(stderr, "Unable to resolve ftp host\n");           log("Unable to resolve ftp host\n");           break;        case CURLE_COULDNT_CONNECT:           fprintf(stderr, "Unable to connect to ftp host\n");           log("Unable to connect to ftp host\n");           break;        case CURLE_FTP_WEIRD_SERVER_REPLY:           fprintf(stderr, "Wierd server reply detected\n");           log("Wierd server reply detected\n");           break;        case CURLE_FTP_ACCESS_DENIED:           fprintf(stderr, "Access denied to ftp upload\n");           log("Access denied to ftp upload\n");           break;        case CURLE_FTP_USER_PASSWORD_INCORRECT:           fprintf(stderr, "Incorrect password for ftp login\n");           log("Incorrect password for ftp login\n");           break;        case CURLE_FTP_WEIRD_PASS_REPLY:           fprintf(stderr, "Wierd password reply from server\n");           log("Wierd password reply from server\n");           break;        case CURLE_FTP_WEIRD_USER_REPLY:           fprintf(stderr, "Wierd user reply from server\n");           log("Wierd user reply from server\n");           break;        case CURLE_FTP_WEIRD_PASV_REPLY:           fprintf(stderr, "Wierd passive reply from server\n");           log("Wierd passive reply from server\n");           break;        case CURLE_FTP_CANT_GET_HOST:           fprintf(stderr, "No route to host\n");           log("No route to host\n");           break;        case CURLE_FTP_COULDNT_SET_BINARY:           fprintf(stderr, "Couldn't set binary mode\n");           log("Couldn't set binary mode\n");           break;        case CURLE_PARTIAL_FILE:           fprintf(stderr, "Only partial file uploaded\n");           log("Only partial file uploaded\n");           break;        case CURLE_FTP_WRITE_ERROR:           fprintf(stderr, "Write error\n");           log("Write error\n");           break;        case CURLE_FTP_QUOTE_ERROR:           fprintf(stderr, "Misquoted ftp command - check ftp config\n");           log("Misquoted ftp command - check ftp config\n");           break;        case CURLE_WRITE_ERROR:           fprintf(stderr, "Write error\n");           log("Write error\n");           break;        case CURLE_MALFORMAT_USER:	/* the user name is illegally specified */           fprintf(stderr, "Malformatted username\n");           log("Malformatted username\n");           break;        case CURLE_FTP_COULDNT_STOR_FILE:	/* failed FTP upload */           fprintf(stderr, "Couldn't STOR the file\n");           log("Couldn't STOR the file\n");           break;        case CURLE_READ_ERROR:	/* could open/read from file */           fprintf(stderr, "Couldn't open temp file\n");           log("Couldn't open temp file\n");           break;        case CURLE_OUT_OF_MEMORY:           fprintf(stderr, "Out of memory\n");           log("Out of memory\n");           break;        case CURLE_OPERATION_TIMEOUTED:	/* the timeout time was reached */           fprintf(stderr, "Upload timed out\n");           log("Upload timed out\n");           break;        case CURLE_FTP_PORT_FAILED:	/* FTP PORT operation failed */           fprintf(stderr, "ftp PORT failed\n");           log("ftp PORT failed\n");           break;        case CURLE_FILE_COULDNT_READ_FILE:           fprintf(stderr, "Couldn't read temp file\n");           log("Couldn't read temp file\n");           break;        default:           fprintf(stderr, "unknown error, attempting to continue\n");           log("unknown error, attempting to continue\n");           break;      }   }   /* cleanup curl stuff */   curl_easy_cleanup(curl_handle);   curl_slist_free_all(post_commands);   free(url_string);   free(passwd_string);   fclose(infile);}intmain(int argc, char *argv[]){   unsigned char *val;   Imlib_Image image;   char filename[100];   int width, height, i;   struct stat st;   pid_t childpid;   time_t start_shot;   time_t end_shot;   int just_shot = 0, upload_successful = 1;   int new_delay;   FILE *fp;   if ((argc >= 2) && (!strcmp(argv[1], "-f")))   {      /* don't fork */   }   else   {      /* fork and die */      if ((childpid = fork()) < 0)      {         fprintf(stderr, "fork (%s)\n", strerror(errno));         return (2);      }      else if (childpid > 0)         exit(0);       /* parent */   }   /* read config */   sprintf(filename, "%s/%s", getenv("HOME"), ".camErc");   fprintf(stderr, "reading config file: %s\n", filename);   cfg_parse_file(filename);   if (NULL != (val = cfg_get_str("ftp", "host")))      ftp_host = val;   if (NULL != (val = cfg_get_str("ftp", "user")))      ftp_user = val;   if (NULL != (val = cfg_get_str("ftp", "pass")))      ftp_pass = val;   if (NULL != (val = cfg_get_str("ftp", "dir")))      ftp_dir = val;   if (NULL != (val = cfg_get_str("ftp", "file")))      ftp_file = val;   if (NULL != (val = cfg_get_str("ftp", "tmp")))      ftp_tmp = val;   if (-1 != (i = cfg_get_int("ftp", "passive")))      ftp_passive = i;   if (-1 != (i = cfg_get_int("ftp", "debug")))      ftp_debug = i;   if (-1 != (i = cfg_get_int("ftp", "do")))      ftp_do = i;   if (-1 != (i = cfg_get_int("ftp", "timeout")))      ftp_timeout = i;   if (NULL != (val = cfg_get_str("ftp", "pasvmode")))      ftp_pasvmode = val;   if (NULL != (val = cfg_get_str("scp", "target")))      scp_target = val;   if (-1 != (i = cfg_get_int("scp", "timeout")))      scp_timeout = i;   if (NULL != (val = cfg_get_str("grab", "device")))      grab_device = val;   if (NULL != (val = cfg_get_str("grab", "text")))      grab_text = val;   if (NULL != (val = cfg_get_str("grab", "infofile")))      grab_infofile = val;   if (NULL != (val = cfg_get_str("grab", "action_pre_shot")))      action_pre_shot = val;   if (NULL != (val = cfg_get_str("grab", "action_post_shot")))      action_post_shot = val;   if (NULL != (val = cfg_get_str("grab", "action_post_upload")))      action_post_upload = val;   if (NULL != (val = cfg_get_str("grab", "archive")))      grab_archive = val;   if (NULL != (val = cfg_get_str("grab", "blockfile")))      grab_blockfile = val;   if (NULL != (val = cfg_get_str("grab", "uploadblockfile")))      upload_blockfile = val;   if (NULL != (val = cfg_get_str("grab", "postprocess")))      grab_postprocess = val;   if (NULL != (val = cfg_get_str("grab", "title_text")))      title_text = val;   if (NULL != (val = cfg_get_str("grab", "archive_ext")))      archive_ext = val;   if (NULL != (val = cfg_get_str("grab", "logfile")))      logfile = val;   if (NULL != (val = cfg_get_str("grab", "ttf_dir")))      ttf_dir = val;   if (NULL != (val = cfg_get_str("grab", "title_font")))      title_font = val;   if (NULL != (val = cfg_get_str("grab", "text_font")))      text_font = val;   if (NULL != (val = cfg_get_str("grab", "temp_file")))      temp_file = val;   if (NULL != (val = cfg_get_str("grab", "title_style")))      title_style_file = val;   if (NULL != (val = cfg_get_str("grab", "text_style")))      text_style_file = val;   if (NULL != (val = cfg_get_str("grab", "overlay_image")))      overlay_file = val;   if (-1 != (i = cfg_get_int("grab", "width")))      grab_width = i;   if (-1 != (i = cfg_get_int("grab", "height")))      grab_height = i;   if (-1 != (i = cfg_get_int("grab", "delay")))      grab_delay = i;   if (-1 != (i = cfg_get_int("grab", "correct")))      delay_correct = 1;   if (-1 != (i = cfg_get_int("grab", "percent")))      bw_percent = i;   if (-1 != (i = cfg_get_int("grab", "quality")))      grab_quality = i;   if (-1 != (i = cfg_get_int("grab", "input")))      grab_input = i;   if (-1 != (i = cfg_get_int("grab", "norm")))      grab_norm = i;   if (-1 != (i = cfg_get_int("grab", "text_r")))      text_r = i;   if (-1 != (i = cfg_get_int("grab", "text_g")))      text_g = i;   if (-1 != (i = cfg_get_int("grab", "text_b")))      text_b = i;   if (-1 != (i = cfg_get_int("grab", "text_a")))      text_a = i;   if (-1 != (i = cfg_get_int("grab", "title_r")))      title_r = i;   if (-1 != (i = cfg_get_int("grab", "title_g")))      title_g = i;   if (-1 != (i = cfg_get_int("grab", "title_b")))      title_b = i;   if (-1 != (i = cfg_get_int("grab", "title_a")))      title_a = i;   if (-1 != (i = cfg_get_int("grab", "bg_r")))      bg_r = i;   if (-1 != (i = cfg_get_int("grab", "bg_g")))      bg_g = i;   if (-1 != (i = cfg_get_int("grab", "bg_b")))      bg_b = i;   if (-1 != (i = cfg_get_int("grab", "bg_a")))      bg_a = i;   if (-1 != (i = cfg_get_int("grab", "close_dev")))      close_dev = i;   if (-1 != (i = cfg_get_int("grab", "lag_reduce")))      lag_reduce = i;   if (-1 != (i = cfg_get_int("grab", "overlay_x")))      overlay_x = i;   if (-1 != (i = cfg_get_int("grab", "overlay_y")))      overlay_y = i;   /* print config */   fprintf(stderr, "camE v0.9 - (c) 1999, 2000 Gerd Knorr, Tom Gilbert\n");   fprintf(stderr,           "grabber config: size %dx%d, input %d, norm %d, "           "jpeg quality %d\n", grab_width, grab_height, grab_input,           grab_norm, grab_quality);   if (ftp_do)      fprintf(stderr, "ftp config:\n  %s@%s:%s\n  %s => %s\n", ftp_user,              ftp_host, ftp_dir, ftp_tmp, ftp_file);      /* clear logfile */   if(logfile)   {     fp = fopen(logfile, "w");     if(fp)        fclose(fp);   }   /* init everything */   grab_init();   imlib_context_set_direction(IMLIB_TEXT_TO_RIGHT);   imlib_add_path_to_font_path(ttf_dir);   imlib_add_path_to_font_path(".");   imlib_context_set_operation(IMLIB_OP_COPY);   imlib_set_cache_size(0);   if (title_style_file)      title_style = gib_style_new_from_ascii(title_style_file);   if (text_style_file)      text_style = gib_style_new_from_ascii(text_style_file);   if (overlay_file)      overlay_im = imlib_load_image(overlay_file);   title_fn = imlib_load_font(title_font);   if (!title_fn)      fprintf(stderr, "can't load font %s\n", title_font);   text_fn = imlib_load_font(text_font);   if (!text_fn)      fprintf(stderr, "can't load font %s\n", text_font);   /* go! */   for (;;)   {      just_shot = 0;      upload_successful = 1;      end_shot = 0;      start_shot = 0;      if ((grab_blockfile && (stat(grab_blockfile, &st) == -1))          || !grab_blockfile)      {         time(&start_shot);         if (action_pre_shot)         {            log("running pre-shot action\n");            system(action_pre_shot);            log("pre-shot action done\n");         }         log("* taking shot\n");         /* Prevent camera lag... */         image = grab_one(&width, &height);         imlib_context_set_image(image);         if (!image)         {            fprintf(stderr, "no image captured\n");            exit(2);         }         log("** shot taken\n");         if (action_post_shot)         {            log("running post-shot action\n");            system(action_post_shot);            log("post-shot action done\n");         }         if (overlay_im)            draw_overlay(image);         add_time_text(image, get_message(), width, height);         gib_imlib_save_image(image, temp_file);         do_postprocess(temp_file);         archive_jpeg(image);         gib_imlib_free_image_and_decache(image);         if (ftp_do)         {            if ((upload_blockfile && (stat(upload_blockfile, &st) == -1))                || !upload_blockfile)            {               log("*** uploading via ftp\n");               ftp_upload1(temp_file, ftp_file, ftp_tmp);               log("shot uploaded\n");               if (action_post_upload)               {                  log("running post upload action\n");                  system(action_post_upload);                  log("post upload action done\n");               }            }         }         else if (scp_target)         {            char target_buf[2048];            char cmd_buf[4096];            char *scp_args[5] = { "scp", "-BCq", NULL, NULL, NULL };            char *ssh_args[20] = { "ssh", "-n", "-q", NULL, NULL, NULL };            if ((upload_blockfile && (stat(upload_blockfile, &st) == -1))                || !upload_blockfile)            {               log("uploading via scp\n");               snprintf(target_buf, sizeof(target_buf), "%s:%s/%s",                                    scp_target, ftp_dir, ftp_tmp);               snprintf(cmd_buf, sizeof(cmd_buf), "mv %s/%s %s/%s", ftp_dir, ftp_tmp, ftp_dir, ftp_file);               scp_args[2] = temp_file;               scp_args[3] = target_buf;               if((upload_successful = execvp_with_timeout(scp_timeout, "scp", scp_args)))               {                 ssh_args[3] = scp_target;                 ssh_args[4] = cmd_buf;                 if((upload_successful = execvp_with_timeout(scp_timeout, "ssh", ssh_args)))                 {                    log("shot uploaded\n");                                   if (action_post_upload)                    {                       log("running post upload action\n");                       system(action_post_upload);                       log("post upload action done\n");                    }                 }               }            }         }         just_shot = 1;         time(&end_shot);      }      new_delay = grab_delay;      if (just_shot && upload_successful)      {         end_shot = end_shot - start_shot;         if (bw_percent < 100)            bw_res_change(end_shot);         if (delay_correct && end_shot)         {            new_delay -= end_shot;            if (new_delay < 0)               new_delay = 0;            log("Sleeping %d secs (corrected)\n", new_delay);         }         else         {            log("Sleeping %d secs\n", grab_delay);         }      }      if (upload_successful && (new_delay > 0))         sleep(new_delay);   }   return 0;}int execvp_with_timeout(int timeout, char *file, char **argv){   int status, ret;      signal(SIGALRM, alarm_handler);   alarm(timeout);   if ((childpid = fork()) < 0)   {      fprintf(stderr, "fork (%s)\n", strerror(errno));      exit (2);   }   else if (childpid == 0)   {      /* child */      execvp(file, argv);      fprintf(stderr, "execvp %s (%s)\n", file, strerror(errno));      exit(2);   }   else if (childpid > 0)   {      /* parent */      ret = waitpid(childpid, &status, 0);      alarm(0);      childpid = 0;      if (!WIFEXITED(status) || WEXITSTATUS(status) != 0)      {         log("exec failed for %s\n", file);         return 0;      }   }   return 1;}void alarm_handler(int sig){  signal(sig, SIG_IGN);  log("timeout reached, abandoning\n");  if(childpid)  {     kill(childpid, SIGTERM);  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -