Mercurial > audlegacy
comparison libaudacious/beepctrl.c @ 1439:bd0b46c8a70e trunk
[svn] - i believe we've got it!
| author | nenolod |
|---|---|
| date | Fri, 28 Jul 2006 00:46:34 -0700 |
| parents | ce0285d8cede |
| children | ed80e946f30b |
comparison
equal
deleted
inserted
replaced
| 1438:ce0285d8cede | 1439:bd0b46c8a70e |
|---|---|
| 311 | 311 |
| 312 db = bmp_cfg_db_open(); | 312 db = bmp_cfg_db_open(); |
| 313 | 313 |
| 314 if (audacious_session_uri != NULL) | 314 if (audacious_session_uri != NULL) |
| 315 { | 315 { |
| 316 printf("%p\n", audacious_session_uri); | |
| 317 return audacious_session_uri; | 316 return audacious_session_uri; |
| 318 } | 317 } |
| 319 | 318 |
| 320 bmp_cfg_db_get_string(db, NULL, "session_uri_base", &value); | 319 bmp_cfg_db_get_string(db, NULL, "session_uri_base", &value); |
| 321 | 320 |
| 345 | 344 |
| 346 /* tcp://192.168.100.1:5900/zyzychynxi389xvmfewqaxznvnw */ | 345 /* tcp://192.168.100.1:5900/zyzychynxi389xvmfewqaxznvnw */ |
| 347 void | 346 void |
| 348 audacious_decode_tcp_uri(gint session, gchar *in, gchar **host, gint *port, gchar **key) | 347 audacious_decode_tcp_uri(gint session, gchar *in, gchar **host, gint *port, gchar **key) |
| 349 { | 348 { |
| 350 static gchar workbuf[1024], keybuf[1024]; | 349 static gchar *workbuf, *keybuf; |
| 351 gint iport; | 350 gint iport; |
| 351 gchar *tmp = g_strdup(in); | |
| 352 | 352 |
| 353 /* split out the host/port and key */ | 353 /* split out the host/port and key */ |
| 354 sscanf(in, "tcp://%s/%s", workbuf, keybuf); | 354 tmp += 6; |
| 355 workbuf = tmp; | |
| 356 | |
| 357 keybuf = strchr(tmp, '/'); | |
| 358 *keybuf++ = '\0'; | |
| 355 | 359 |
| 356 *key = keybuf; | 360 *key = keybuf; |
| 357 | 361 |
| 358 if (strchr(workbuf, ':') == NULL) | 362 if (strchr(workbuf, ':') == NULL) |
| 359 { | 363 { |
| 369 } | 373 } |
| 370 } | 374 } |
| 371 | 375 |
| 372 /* unix://localhost/tmp/audacious_nenolod.0 */ | 376 /* unix://localhost/tmp/audacious_nenolod.0 */ |
| 373 void | 377 void |
| 374 audacious_decode_unix_uri(gint session, gchar *in, gchar **out) | 378 audacious_decode_unix_uri(gint session, gchar *in, gchar **key) |
| 375 { | 379 { |
| 376 static gchar workbuf[1024], pathbuf[1024]; | 380 static gchar *workbuf, *keybuf; |
| 377 | 381 gchar *tmp = g_strdup(in); |
| 378 /* retrieve the pathbuf */ | 382 |
| 379 sscanf(in, "unix://%s/%s", workbuf, pathbuf); | 383 /* split out the host/port and key */ |
| 380 | 384 tmp += 7; |
| 381 *out = pathbuf; | 385 workbuf = tmp; |
| 386 | |
| 387 keybuf = strchr(tmp, '/'); | |
| 388 *keybuf++ = '\0'; | |
| 389 | |
| 390 *key = keybuf; | |
| 382 } | 391 } |
| 383 | 392 |
| 384 gint | 393 gint |
| 385 xmms_connect_to_session(gint session) | 394 xmms_connect_to_session(gint session) |
| 386 { | 395 { |
| 401 euid = geteuid(); | 410 euid = geteuid(); |
| 402 setuid(euid); | 411 setuid(euid); |
| 403 | 412 |
| 404 audacious_decode_unix_uri(session, uri, &path); | 413 audacious_decode_unix_uri(session, uri, &path); |
| 405 | 414 |
| 406 /* | |
| 407 g_snprintf(saddr.sun_path, 108, "%s/%s_%s.%d", g_get_tmp_dir(), | |
| 408 CTRLSOCKET_NAME, g_get_user_name(), session); | |
| 409 */ | |
| 410 g_strlcpy(saddr.sun_path, path, 108); | 415 g_strlcpy(saddr.sun_path, path, 108); |
| 411 setreuid(stored_uid, euid); | 416 setreuid(stored_uid, euid); |
| 412 if (connect(fd, (struct sockaddr *) &saddr, sizeof(saddr)) != -1) | 417 if (connect(fd, (struct sockaddr *) &saddr, sizeof(saddr)) != -1) |
| 413 return fd; | 418 return fd; |
| 414 } | 419 } |
