* This file is part of DisOrder
* Copyright (C) 2007, 2008 Richard Kettlewell
*
- * This program is free software; you can redistribute it and/or modify
+ * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
+ * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
* You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/** @file disobedience/login.c
* @brief Login box for Disobedience
if(config->password)
return;
/* If we already have a host and/or port that's good too */
- if(config->connect.n)
+ if(config->connect.af != -1)
return;
/* If there's a suitable socket that's probably what we wanted */
const char *s = config_get_file("socket");
}
static const char *get_hostname(void) {
- return config->connect.n >= 2 ? config->connect.s[0] : "";
+ if(config->connect.af == -1 || !config->connect.address)
+ return "";
+ else
+ return config->connect.address;
}
static const char *get_service(void) {
- return config->connect.n >= 2 ? config->connect.s[1] : "";
+ if(config->connect.af == -1)
+ return "";
+ else {
+ char *s;
+
+ byte_xasprintf(&s, "%d", config->connect.port);
+ return s;
+ }
}
static const char *get_username(void) {
}
static void set_hostname(struct config *c, const char *s) {
- c->connect.s[0] = (char *)s;
+ if(c->connect.af == -1)
+ c->connect.af = AF_UNSPEC;
+ c->connect.address = xstrdup(s);
}
static void set_service(struct config *c, const char *s) {
- c->connect.s[1] = (char *)s;
+ c->connect.port = atoi(s);
}
static void set_username(struct config *c, const char *s) {
size_t n;
const gboolean remote = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lwi_remote));
- if(remote) {
- c->connect.n = 2;
- c->connect.s = xcalloc(2, sizeof (char *));
- } else {
- c->connect.n = 0;
- c->connect.s = 0;
- }
+ if(remote)
+ c->connect.af = AF_UNSPEC;
+ else
+ c->connect.af = -1;
for(n = 0; n < NLWIS; ++n)
if(remote || !(lwis[n].flags & LWI_REMOTE))
lwis[n].set(c, xstrdup(gtk_entry_get_text(GTK_ENTRY(lwi_entry[n]))));
"password %s\n",
quoteutf8(config->username),
quoteutf8(config->password));
- if(rc >= 0 && config->connect.n)
- rc = fprintf(fp, "connect %s %s\n",
- quoteutf8(config->connect.s[0]),
- quoteutf8(config->connect.s[1]));
+ if(rc >= 0 && config->connect.af != -1) {
+ char **vec;
+
+ netaddress_format(&config->connect, NULL, &vec);
+ rc = fprintf(fp, "connect %s %s %s\n", vec[0], vec[1], vec[2]);
+ }
if(rc < 0) {
fpopup_msg(GTK_MESSAGE_ERROR, "error writing to %s: %s",
tmp, strerror(errno));
}
/* Initial settings */
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(lwi_remote),
- config->connect.n >= 2);
+ config->connect.af != -1);
lwi_remote_toggled(GTK_TOGGLE_BUTTON(lwi_remote), 0);
buttonbox = create_buttons(buttons, NBUTTONS);
vbox = gtk_vbox_new(FALSE, 1);