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

📄 connect.c

📁 Media transfer protocol implementation on POSIX. Have detailed readme on how to move to windows
💻 C
字号:
#include <libgen.h>#include <getopt.h>#include "common.h"#include "string.h"#include "pathutils.h"LIBMTP_folder_t *folders;LIBMTP_file_t *files;LIBMTP_mtpdevice_t *device;void usage(void);void split_arg(char *,char **, char **);void delfile_function(char *);void delfile_command(int, char **);void delfile_usage(void);int sendtrack_function(char *, char *, char *, char *, char *, char *, uint16_t, uint16_t, uint16_t);void sendtrack_command (int, char **);void sendtrack_usage(void);void sendfile_function(char *,char *);void sendfile_command(int, char **);void sendfile_usage(void);void getfile_function(char *,char *);void getfile_command(int, char **);void getfile_usage(void);void newfolder_function(char *);void newfolder_command(int,char **);void newfolder_usage(void);voidsplit_arg(char * argument, char ** part1, char ** part2){  char *sepp;  *part1 = NULL;  *part2 = NULL;  sepp = argument + strcspn(argument, ",");  sepp[0] = '\0';  *part1 = argument;  *part2 = sepp+1;}voidusage(void){  printf("Usage: connect <command1> <command2>\n");  printf("Commands: --delete [filename]\n");  printf("          --sendfile [source],[destination]\n");  printf("          --sendtrack [source],[destination]\n");  printf("          --getfile [source],[destination]\n");  printf("          --newfolder [foldername]\n");}int main (int argc, char **argv){  if ( argc < 2 ) {    usage ();    return 1;  }  /*   * Check environment variables $LANG and $LC_CTYPE   * to see if we want to support UTF-8 unicode   */  char * lang = getenv("LANG");  if (lang != NULL) {    if (strlen(lang) > 5) {      char *langsuff = &lang[strlen(lang)-5];      if (strcmp(langsuff, "UTF-8")) {        printf("Your system does not appear to have UTF-8 enabled ($LANG=\"%s\")\n", lang);        printf("If you want to have support for diacritics and Unicode characters,\n");        printf("please switch your locale to an UTF-8 locale, e.g. \"en_US.UTF-8\".\n");      }    }  }  LIBMTP_Init();  device = LIBMTP_Get_First_Device();  if (device == NULL) {    printf("No devices.\n");    return 0;  }  files = LIBMTP_Get_Filelisting_With_Callback (device, NULL, NULL);  folders = LIBMTP_Get_Folder_List (device);  if ((strncmp(basename(argv[0]),"mtp-delfile",11) == 0) || (strncmp(basename(argv[0]),"delfile",7) == 0)) {    delfile_command(argc,argv);  } else if ((strncmp(basename(argv[0]),"mtp-getfile",13) == 0) || (strncmp(basename(argv[0]),"getfile",9) == 0)) {    getfile_command(argc,argv);  } else if ((strncmp(basename(argv[0]),"mtp-newfolder",13) == 0) || (strncmp(basename(argv[0]),"newfolder",9) == 0)) {    newfolder_command(argc,argv);  } else if ((strncmp(basename(argv[0]),"mtp-sendfile",11) == 0) || (strncmp(basename(argv[0]),"sendfile",7) == 0)) {    sendfile_command(argc, argv);  } else if ((strncmp(basename(argv[0]),"mtp-sendtr",10) == 0) || (strncmp(basename(argv[0]),"sendtr",6) == 0)) {    sendtrack_command(argc, argv);  } else {      while (1) {      int option_index = 0;      static struct option long_options[] = {        {"delete", 1, 0, 'd'},        {"sendfile", 1, 0, 'f'},        {"getfile", 1, 0, 'g'},        {"newfolder", 1, 0, 'n'},        {"sendtrack", 1, 0, 't'},        {0, 0, 0, 0}      };        int c = getopt_long (argc, argv, "d:f:g:n:t:", long_options, &option_index);      if (c == -1)        break;        char *arg1, *arg2;      switch (c) {      case 'd':        printf("Delete %s\n",optarg);        delfile_function(optarg);        break;        case 'f':        printf("Send file %s\n",optarg);        split_arg(optarg,&arg1,&arg2);        sendfile_function(arg1,arg2);        break;        case 'g':        printf("Get file %s\n",optarg);        split_arg(optarg,&arg1,&arg2);        getfile_function(arg1,arg2);        break;        case 'n':        printf("New folder %s\n",optarg);        newfolder_function(optarg);        break;        case 't':        printf("Send track %s\n",optarg);        split_arg(optarg,&arg1,&arg2);        sendtrack_function(arg1,arg2,NULL,NULL,NULL,NULL,0,0,0);        break;      }    }      if (optind < argc) {      printf("Unknown options: ");      while (optind < argc)        printf("%s ", argv[optind++]);      printf("\n");    }  }    LIBMTP_Release_Device(device);  exit (0);}

⌨️ 快捷键说明

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