matchs.c 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /* $Id: matchs.c,v 1.13 2001/05/01 13:34:20 kilobug Exp $ */
  2. #include "mclient.h"
  3. int mat_sort(GtkCList *clist, gconstpointer ptr1, gconstpointer ptr2)
  4. {
  5. switch (clist->sort_column)
  6. {
  7. case 0: case 1: case 2:
  8. return clist_compare_str(clist, ptr1, ptr2);
  9. case 3:
  10. return clist_compare_float(clist, ptr1, ptr2);
  11. }
  12. return 0;
  13. }
  14. void mat_refresh(GtkWidget *wid, void *data)
  15. {
  16. static sql_list_t *lst = NULL;
  17. char *buf;
  18. if (lst == NULL)
  19. {
  20. buf = g_malloc(MYSQL_BUFFER_SIZE);
  21. g_snprintf(buf, MYSQL_BUFFER_SIZE,
  22. "SELECT m.id, CONCAT(m.host, ':', m.port), b.pseudo, map.nom,"
  23. " m.joueurs "
  24. "FROM Maps map, Matchs m, Bitmaps b "
  25. "WHERE (b.id = m.auteur) AND (map.id = m.map) "
  26. " AND (m.statut = 1) "
  27. " AND ((m.public) OR (m.auteur = %d) OR (%d = 1))",
  28. getuid(), gl_config->staff);
  29. lst = mysql_list_make(buf, 5, GTK_CLIST(gl_config->matl), -1);
  30. }
  31. mysql_list_refresh(lst, NULL);
  32. }
  33. void mat_connect(GtkWidget *wid, void *data)
  34. {
  35. GList *l;
  36. char *s;
  37. char buf[12];
  38. int i, id;
  39. for (l = GTK_CLIST(gl_config->matl)->selection; l != NULL; l = l->next)
  40. {
  41. id = *((int *) gtk_clist_get_row_data(GTK_CLIST(gl_config->matl),
  42. GPOINTER_TO_INT(l->data)));
  43. i = mysql_get_int(gl_config->mysql,
  44. "SELECT port FROM Matchs WHERE id = %d",
  45. id);
  46. s = mysql_get_str(gl_config->mysql,
  47. "SELECT host FROM Matchs WHERE id = %d",
  48. id);
  49. g_snprintf(buf, 12, "%d", i);
  50. if (!fork())
  51. {
  52. execlp(gl_config->gfx_client, gl_config->gfx_client,
  53. "-h", s, "-p", buf, NULL);
  54. _exit(0);
  55. }
  56. g_free(s);
  57. }
  58. }