# HG changeset patch # User Stu Tomlinson # Date 1097426876 0 # Node ID 6cd2b467e303b0aa52eff89b6620b1424fcd74d9 # Parent 9c174a7f9afca8e8cc9342e7f7b4cd285894898d [gaim-migrate @ 11097] Add a --session option to gaim-remote to allow manipulating multiple Gaim instances committer: Tailor Script diff -r 9c174a7f9afc -r 6cd2b467e303 src/gaim-remote.c --- a/src/gaim-remote.c Sun Oct 10 16:37:37 2004 +0000 +++ b/src/gaim-remote.c Sun Oct 10 16:47:56 2004 +0000 @@ -43,6 +43,7 @@ {"to", required_argument, NULL, 't'}, {"protocol",required_argument, NULL, 'p'}, {"from", required_argument, NULL, 'f'}, + {"session", required_argument, NULL, 's'}, {"quiet", no_argument, NULL, 'q'}, {"help", no_argument, NULL, 'h'}, {0,0,0,0} @@ -52,7 +53,7 @@ char *command; char *uri; gboolean help, quiet; - char *message, *to, *from, *protocol; + char *message, *to, *from, *protocol, *session; /*int protocol;*/ }; struct remoteopts opts; @@ -112,6 +113,7 @@ " -t, --to=SCREENNAME Select a target for command\n" " -p, --protocol=PROTO Specify protocol to use\n" " -f, --from=SCREENNAME Specify screen name to use\n" + " -s, --session=SESSION Specify which Gaim session to use\n" " -h, --help [command] Show help for command\n"), name); message(text, 1); @@ -128,7 +130,7 @@ memset(&opts, 0, sizeof(opts)); /*opts.protocol = -1;*/ - while ((i=getopt_long(argc, argv, "m:t:p:f:qh", longopts, NULL)) != -1) { + while ((i=getopt_long(argc, argv, "m:t:p:f:s:qh", longopts, NULL)) != -1) { switch (i) { case 'm': opts.message = optarg; @@ -142,6 +144,9 @@ case 'f': opts.from = optarg; break; + case 's': + opts.session = optarg; + break; case 'q': opts.quiet = TRUE; break; @@ -150,7 +155,7 @@ break; } } - + /* We must have non getopt'ed argument-- the command */ if (optind < argc) opts.command = g_strdup(argv[optind++]); @@ -172,7 +177,26 @@ else return 1; - return 0; + return 0; +} + +static int +open_session() { + int fd = 0, session = 0; + char *msg; + + if (opts.session != NULL) + session = atoi(opts.session); + + fd = gaim_remote_session_connect(session); + if (fd < 0) { + msg = g_strdup_printf(_("Gaim not running (on session %d)\nIs the \"Remote Control\" plugin loaded?\n"), session); + message(msg, 2); + g_free(msg); + return -1; + } + + return fd; } static int @@ -180,9 +204,8 @@ int fd = 0; GaimRemotePacket *p = NULL; - fd = gaim_remote_session_connect(0); + fd = open_session(); if (fd < 0) { - message(_("Gaim not running (on session 0)\nIs the \"Remote Control\" plugin loaded?\n"), 2); return 1; } p = gaim_remote_packet_new(type, subtype); @@ -198,9 +221,8 @@ int fd = 0; GaimRemotePacket *p = NULL; - fd = gaim_remote_session_connect(0); + fd = open_session(); if (fd < 0) { - message(_("Gaim not running (on session 0)\nIs the \"Remote Control\" plugin loaded?\n"), 2); return 1; } p = gaim_remote_packet_new(CUI_TYPE_REMOTE, CUI_REMOTE_URI); @@ -218,9 +240,8 @@ GaimRemotePacket *p = NULL; char temp[10003]; /* TODO: Future implementation should send packets instead */ - fd = gaim_remote_session_connect(0); + fd = open_session(); if (fd < 0) { - message(_("Gaim not running (on session 0)\nIs the \"Remote Control\" plugin loaded?\n"), 2); return 1; } p = gaim_remote_packet_new(CUI_TYPE_REMOTE, CUI_REMOTE_SEND);