ptrs and ints of different size and -Werror makes this serious).
The GTK bits are done by Colin's patch to use GINT_TO_POINTER
(thanks); the uxnet bits are done by cleaning up the rest of the
code. In particular, network.h now typedefs `OSSocket' to be a type
capable of holding whatever the OS's socket data type is that
underlies our socket abstraction. Individual platforms can make this
typedef themselves if they define OSSOCKET_DEFINED to prevent
network.h redoing it; so the Unix OSSocket is now int. Default is
still void *, so other platforms should be unaffected.
git-svn-id: svn://svn.tartarus.org/sgt/putty@3171
cda61777-01e9-0310-a592-
d414129be87e
typedef struct socket_function_table **Socket;
typedef struct plug_function_table **Plug;
+#ifndef OSSOCKET_DEFINED
+typedef void *OSSocket;
+#endif
+
struct socket_function_table {
Plug(*plug) (Socket s, Plug p);
/* use a different plug (return the old one) */
* on a socket is cleared or partially cleared. The new backlog
* size is passed in the `bufsize' parameter.
*/
- int (*accepting)(Plug p, void *sock);
+ int (*accepting)(Plug p, OSSocket sock);
/*
* returns 0 if the host at address addr is a valid host for connecting or error
*/
Socket sk_newlistener(char *srcaddr, int port, Plug plug, int local_host_only);
-Socket sk_register(void *sock, Plug plug);
+Socket sk_register(OSSocket sock, Plug plug);
#define sk_plug(s,p) (((*s)->plug) (s, p))
#define sk_close(s) (((*s)->close) (s))
called when someone connects to the local port
*/
-static int pfd_accepting(Plug p, void *sock)
+static int pfd_accepting(Plug p, OSSocket sock)
{
static const struct plug_function_table fn_table = {
pfd_closing,
plug_sent(ps->plug, bufsize);
}
-static int plug_proxy_accepting (Plug p, void *sock)
+static int plug_proxy_accepting (Plug p, OSSocket sock)
{
Proxy_Plug pp = (Proxy_Plug) p;
Proxy_Socket ps = pp->proxy_socket;
int sent_bufsize;
/* accepting */
- void *accepting_sock;
+ OSSocket accepting_sock;
/* configuration, used to look up proxy settings */
Config cfg;
gtk_container_add(GTK_CONTAINER(uc->menu), menuitem);
gtk_widget_show(menuitem);
- gtk_object_set_data(GTK_OBJECT(menuitem), "user-data", (gpointer)id);
+ gtk_object_set_data(GTK_OBJECT(menuitem), "user-data",
+ GINT_TO_POINTER(id));
gtk_signal_connect(GTK_OBJECT(menuitem), "activate",
GTK_SIGNAL_FUNC(menuitem_activate), dp);
} else if (!uc->entry) {
GTK_SIGNAL_FUNC(widget_focus), dp);
gtk_signal_connect(GTK_OBJECT(listitem), "button_press_event",
GTK_SIGNAL_FUNC(listitem_button), dp);
- gtk_object_set_data(GTK_OBJECT(listitem), "user-data", (gpointer)id);
+ gtk_object_set_data(GTK_OBJECT(listitem), "user-data",
+ GINT_TO_POINTER(id));
} else {
/*
* List item in a combo-box list, which means the sensible
gtk_container_add(GTK_CONTAINER(uc->list), listitem);
gtk_widget_show(listitem);
- gtk_object_set_data(GTK_OBJECT(listitem), "user-data", (gpointer)id);
+ gtk_object_set_data(GTK_OBJECT(listitem), "user-data",
+ GINT_TO_POINTER(id));
}
dp->flags &= ~FLAG_UPDATING_COMBO_LIST;
item = GTK_OBJECT(g_list_nth_data(children, index));
g_list_free(children);
- return (int)gtk_object_get_data(GTK_OBJECT(item), "user-data");
+ return GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(item), "user-data"));
}
/* dlg_listbox_index returns <0 if no single element is selected. */
void special_menuitem(GtkMenuItem *item, gpointer data)
{
struct gui_data *inst = (struct gui_data *)data;
- int code = (int)gtk_object_get_data(GTK_OBJECT(item), "user-data");
+ int code = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(item),
+ "user-data"));
inst->back->special(inst->backhandle, code);
}
if (*specials[i].name) {
menuitem = gtk_menu_item_new_with_label(specials[i].name);
gtk_object_set_data(GTK_OBJECT(menuitem), "user-data",
- (gpointer)specials[i].code);
+ GINT_TO_POINTER(specials[i].code));
gtk_signal_connect(GTK_OBJECT(menuitem), "activate",
GTK_SIGNAL_FUNC(special_menuitem), inst);
} else
typedef void *Context; /* FIXME: probably needs changing */
+typedef int OSSocket;
+#define OSSOCKET_DEFINED /* stop network.h using its default */
+
extern Backend pty_backend;
/*
static int cmpforsearch(void *av, void *bv)
{
Actual_Socket b = (Actual_Socket) bv;
- int as = (int) av, bs = b->s;
+ int as = *(int *)av, bs = b->s;
if (as < bs)
return -1;
if (as > bs)
sk_tcp_socket_error
};
-Socket sk_register(void *sock, Plug plug)
+Socket sk_register(OSSocket sockfd, Plug plug)
{
Actual_Socket ret;
ret->oobpending = FALSE;
ret->listener = 0;
- ret->s = (int)sock;
+ ret->s = sockfd;
if (ret->s < 0) {
ret->error = error_string(errno);
u_long atmark;
/* Find the Socket structure */
- s = find234(sktree, (void *) fd, cmpforsearch);
+ s = find234(sktree, &fd, cmpforsearch);
if (!s)
return 1; /* boggle */
if (s->localhost_only && !ipv4_is_loopback(isa.sin_addr)) {
close(t); /* someone let nonlocal through?! */
- } else if (plug_accepting(s->plug, (void*)t)) {
+ } else if (plug_accepting(s->plug, t)) {
close(t); /* denied or error */
}
break;