mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-07-01 03:22:48 -05:00
Rename FROMFIELD to 'container_of'.
Ian Jackson points out that the Linux kernel has a macro of this name with the same purpose, and suggests that it's a good idea to use the same name as they do, so that at least some people reading one code base might recognise it from the other. I never really thought very hard about what order FROMFIELD's parameters should go in, and therefore I'm pleasantly surprised to find that my order agrees with the kernel's, so I don't have to permute every call site as part of making this change :-)
This commit is contained in:
@ -541,7 +541,7 @@ static unifont *x11font_create(GtkWidget *widget, const char *name,
|
||||
|
||||
static void x11font_destroy(unifont *font)
|
||||
{
|
||||
struct x11font *xfont = FROMFIELD(font, struct x11font, u);
|
||||
struct x11font *xfont = container_of(font, struct x11font, u);
|
||||
Display *disp = xfont->disp;
|
||||
int i;
|
||||
|
||||
@ -579,7 +579,7 @@ static void x11_alloc_subfont(struct x11font *xfont, int sfid)
|
||||
|
||||
static int x11font_has_glyph(unifont *font, wchar_t glyph)
|
||||
{
|
||||
struct x11font *xfont = FROMFIELD(font, struct x11font, u);
|
||||
struct x11font *xfont = container_of(font, struct x11font, u);
|
||||
|
||||
if (xfont->sixteen_bit) {
|
||||
/*
|
||||
@ -893,7 +893,7 @@ static void x11font_draw_text(unifont_drawctx *ctx, unifont *font,
|
||||
int x, int y, const wchar_t *string, int len,
|
||||
int wide, int bold, int cellwidth)
|
||||
{
|
||||
struct x11font *xfont = FROMFIELD(font, struct x11font, u);
|
||||
struct x11font *xfont = container_of(font, struct x11font, u);
|
||||
int sfid;
|
||||
int shadowoffset = 0;
|
||||
int mult = (wide ? 2 : 1);
|
||||
@ -1200,7 +1200,7 @@ static char *x11font_scale_fontname(GtkWidget *widget, const char *name,
|
||||
|
||||
static char *x11font_size_increment(unifont *font, int increment)
|
||||
{
|
||||
struct x11font *xfont = FROMFIELD(font, struct x11font, u);
|
||||
struct x11font *xfont = container_of(font, struct x11font, u);
|
||||
Display *disp = xfont->disp;
|
||||
Atom fontprop = XInternAtom(disp, "FONT", False);
|
||||
char *returned_name = NULL;
|
||||
@ -1523,7 +1523,7 @@ static unifont *pangofont_create_fallback(GtkWidget *widget, int height,
|
||||
|
||||
static void pangofont_destroy(unifont *font)
|
||||
{
|
||||
struct pangofont *pfont = FROMFIELD(font, struct pangofont, u);
|
||||
struct pangofont *pfont = container_of(font, struct pangofont, u);
|
||||
pango_font_description_free(pfont->desc);
|
||||
sfree(pfont->widthcache);
|
||||
g_object_unref(pfont->fset);
|
||||
@ -1587,7 +1587,7 @@ static void pangofont_draw_internal(unifont_drawctx *ctx, unifont *font,
|
||||
int len, int wide, int bold, int cellwidth,
|
||||
int combining)
|
||||
{
|
||||
struct pangofont *pfont = FROMFIELD(font, struct pangofont, u);
|
||||
struct pangofont *pfont = container_of(font, struct pangofont, u);
|
||||
PangoLayout *layout;
|
||||
PangoRectangle rect;
|
||||
char *utfstring, *utfptr;
|
||||
@ -2018,7 +2018,7 @@ static char *pangofont_scale_fontname(GtkWidget *widget, const char *name,
|
||||
|
||||
static char *pangofont_size_increment(unifont *font, int increment)
|
||||
{
|
||||
struct pangofont *pfont = FROMFIELD(font, struct pangofont, u);
|
||||
struct pangofont *pfont = container_of(font, struct pangofont, u);
|
||||
PangoFontDescription *desc;
|
||||
int size;
|
||||
char *newname, *retname;
|
||||
@ -2244,7 +2244,7 @@ unifont *multifont_create(GtkWidget *widget, const char *name,
|
||||
|
||||
static void multifont_destroy(unifont *font)
|
||||
{
|
||||
struct multifont *mfont = FROMFIELD(font, struct multifont, u);
|
||||
struct multifont *mfont = container_of(font, struct multifont, u);
|
||||
unifont_destroy(mfont->main);
|
||||
if (mfont->fallback)
|
||||
unifont_destroy(mfont->fallback);
|
||||
@ -2261,7 +2261,7 @@ static void multifont_draw_main(unifont_drawctx *ctx, unifont *font, int x,
|
||||
int wide, int bold, int cellwidth,
|
||||
int cellinc, unifont_draw_func_t draw)
|
||||
{
|
||||
struct multifont *mfont = FROMFIELD(font, struct multifont, u);
|
||||
struct multifont *mfont = container_of(font, struct multifont, u);
|
||||
unifont *f;
|
||||
int ok, i;
|
||||
|
||||
@ -2307,7 +2307,7 @@ static void multifont_draw_combining(unifont_drawctx *ctx, unifont *font,
|
||||
|
||||
static char *multifont_size_increment(unifont *font, int increment)
|
||||
{
|
||||
struct multifont *mfont = FROMFIELD(font, struct multifont, u);
|
||||
struct multifont *mfont = container_of(font, struct multifont, u);
|
||||
return unifont_size_increment(mfont->main, increment);
|
||||
}
|
||||
|
||||
@ -3680,7 +3680,7 @@ unifontsel *unifontsel_new(const char *wintitle)
|
||||
|
||||
void unifontsel_destroy(unifontsel *fontsel)
|
||||
{
|
||||
unifontsel_internal *fs = FROMFIELD(fontsel, unifontsel_internal, u);
|
||||
unifontsel_internal *fs = container_of(fontsel, unifontsel_internal, u);
|
||||
fontinfo *info;
|
||||
|
||||
#ifndef NO_BACKING_PIXMAPS
|
||||
@ -3699,7 +3699,7 @@ void unifontsel_destroy(unifontsel *fontsel)
|
||||
|
||||
void unifontsel_set_name(unifontsel *fontsel, const char *fontname)
|
||||
{
|
||||
unifontsel_internal *fs = FROMFIELD(fontsel, unifontsel_internal, u);
|
||||
unifontsel_internal *fs = container_of(fontsel, unifontsel_internal, u);
|
||||
int i, start, end, size, flags;
|
||||
const char *fontname2 = NULL;
|
||||
fontinfo *info;
|
||||
@ -3759,7 +3759,7 @@ void unifontsel_set_name(unifontsel *fontsel, const char *fontname)
|
||||
|
||||
char *unifontsel_get_name(unifontsel *fontsel)
|
||||
{
|
||||
unifontsel_internal *fs = FROMFIELD(fontsel, unifontsel_internal, u);
|
||||
unifontsel_internal *fs = container_of(fontsel, unifontsel_internal, u);
|
||||
char *name;
|
||||
|
||||
if (!fs->selected)
|
||||
|
20
unix/uxnet.c
20
unix/uxnet.c
@ -483,7 +483,7 @@ SockAddr *sk_addr_dup(SockAddr *addr)
|
||||
|
||||
static Plug *sk_net_plug(Socket *sock, Plug *p)
|
||||
{
|
||||
NetSocket *s = FROMFIELD(sock, NetSocket, sock);
|
||||
NetSocket *s = container_of(sock, NetSocket, sock);
|
||||
Plug *ret = s->plug;
|
||||
if (p)
|
||||
s->plug = p;
|
||||
@ -980,7 +980,7 @@ Socket *sk_newlistener(const char *srcaddr, int port, Plug *plug,
|
||||
if (address_family == AF_INET6 && orig_address_family == ADDRTYPE_UNSPEC) {
|
||||
NetSocket *other;
|
||||
|
||||
other = FROMFIELD(
|
||||
other = container_of(
|
||||
sk_newlistener(srcaddr, port, plug,
|
||||
local_host_only, ADDRTYPE_IPV4),
|
||||
NetSocket, sock);
|
||||
@ -1010,7 +1010,7 @@ Socket *sk_newlistener(const char *srcaddr, int port, Plug *plug,
|
||||
|
||||
static void sk_net_close(Socket *sock)
|
||||
{
|
||||
NetSocket *s = FROMFIELD(sock, NetSocket, sock);
|
||||
NetSocket *s = container_of(sock, NetSocket, sock);
|
||||
|
||||
if (s->child)
|
||||
sk_net_close(&s->child->sock);
|
||||
@ -1039,7 +1039,7 @@ void *sk_getxdmdata(Socket *sock, int *lenp)
|
||||
*/
|
||||
if (sock->vt != &NetSocket_sockvt)
|
||||
return NULL; /* failure */
|
||||
s = FROMFIELD(sock, NetSocket, sock);
|
||||
s = container_of(sock, NetSocket, sock);
|
||||
|
||||
addrlen = sizeof(u);
|
||||
if (getsockname(s->s, &u.sa, &addrlen) < 0)
|
||||
@ -1185,7 +1185,7 @@ void try_send(NetSocket *s)
|
||||
|
||||
static int sk_net_write(Socket *sock, const void *buf, int len)
|
||||
{
|
||||
NetSocket *s = FROMFIELD(sock, NetSocket, sock);
|
||||
NetSocket *s = container_of(sock, NetSocket, sock);
|
||||
|
||||
assert(s->outgoingeof == EOF_NO);
|
||||
|
||||
@ -1211,7 +1211,7 @@ static int sk_net_write(Socket *sock, const void *buf, int len)
|
||||
|
||||
static int sk_net_write_oob(Socket *sock, const void *buf, int len)
|
||||
{
|
||||
NetSocket *s = FROMFIELD(sock, NetSocket, sock);
|
||||
NetSocket *s = container_of(sock, NetSocket, sock);
|
||||
|
||||
assert(s->outgoingeof == EOF_NO);
|
||||
|
||||
@ -1240,7 +1240,7 @@ static int sk_net_write_oob(Socket *sock, const void *buf, int len)
|
||||
|
||||
static void sk_net_write_eof(Socket *sock)
|
||||
{
|
||||
NetSocket *s = FROMFIELD(sock, NetSocket, sock);
|
||||
NetSocket *s = container_of(sock, NetSocket, sock);
|
||||
|
||||
assert(s->outgoingeof == EOF_NO);
|
||||
|
||||
@ -1467,13 +1467,13 @@ const char *sk_addr_error(SockAddr *addr)
|
||||
}
|
||||
static const char *sk_net_socket_error(Socket *sock)
|
||||
{
|
||||
NetSocket *s = FROMFIELD(sock, NetSocket, sock);
|
||||
NetSocket *s = container_of(sock, NetSocket, sock);
|
||||
return s->error;
|
||||
}
|
||||
|
||||
static void sk_net_set_frozen(Socket *sock, int is_frozen)
|
||||
{
|
||||
NetSocket *s = FROMFIELD(sock, NetSocket, sock);
|
||||
NetSocket *s = container_of(sock, NetSocket, sock);
|
||||
if (s->frozen == is_frozen)
|
||||
return;
|
||||
s->frozen = is_frozen;
|
||||
@ -1482,7 +1482,7 @@ static void sk_net_set_frozen(Socket *sock, int is_frozen)
|
||||
|
||||
static char *sk_net_peer_info(Socket *sock)
|
||||
{
|
||||
NetSocket *s = FROMFIELD(sock, NetSocket, sock);
|
||||
NetSocket *s = container_of(sock, NetSocket, sock);
|
||||
union sockaddr_union addr;
|
||||
socklen_t addrlen = sizeof(addr);
|
||||
#ifndef NO_IPV6
|
||||
|
@ -104,7 +104,7 @@ static int localproxy_errfd_find(void *av, void *bv)
|
||||
|
||||
static Plug *sk_localproxy_plug (Socket *s, Plug *p)
|
||||
{
|
||||
LocalProxySocket *ps = FROMFIELD(s, LocalProxySocket, sock);
|
||||
LocalProxySocket *ps = container_of(s, LocalProxySocket, sock);
|
||||
Plug *ret = ps->plug;
|
||||
if (p)
|
||||
ps->plug = p;
|
||||
@ -113,7 +113,7 @@ static Plug *sk_localproxy_plug (Socket *s, Plug *p)
|
||||
|
||||
static void sk_localproxy_close (Socket *s)
|
||||
{
|
||||
LocalProxySocket *ps = FROMFIELD(s, LocalProxySocket, sock);
|
||||
LocalProxySocket *ps = container_of(s, LocalProxySocket, sock);
|
||||
|
||||
if (ps->to_cmd >= 0) {
|
||||
del234(localproxy_by_tofd, ps);
|
||||
@ -201,7 +201,7 @@ static int localproxy_try_send(LocalProxySocket *ps)
|
||||
|
||||
static int sk_localproxy_write (Socket *s, const void *data, int len)
|
||||
{
|
||||
LocalProxySocket *ps = FROMFIELD(s, LocalProxySocket, sock);
|
||||
LocalProxySocket *ps = container_of(s, LocalProxySocket, sock);
|
||||
|
||||
assert(ps->outgoingeof == EOF_NO);
|
||||
|
||||
@ -223,7 +223,7 @@ static int sk_localproxy_write_oob (Socket *s, const void *data, int len)
|
||||
|
||||
static void sk_localproxy_write_eof (Socket *s)
|
||||
{
|
||||
LocalProxySocket *ps = FROMFIELD(s, LocalProxySocket, sock);
|
||||
LocalProxySocket *ps = container_of(s, LocalProxySocket, sock);
|
||||
|
||||
assert(ps->outgoingeof == EOF_NO);
|
||||
ps->outgoingeof = EOF_PENDING;
|
||||
@ -233,13 +233,13 @@ static void sk_localproxy_write_eof (Socket *s)
|
||||
|
||||
static void sk_localproxy_flush (Socket *s)
|
||||
{
|
||||
/* LocalProxySocket *ps = FROMFIELD(s, LocalProxySocket, sock); */
|
||||
/* LocalProxySocket *ps = container_of(s, LocalProxySocket, sock); */
|
||||
/* do nothing */
|
||||
}
|
||||
|
||||
static void sk_localproxy_set_frozen (Socket *s, int is_frozen)
|
||||
{
|
||||
LocalProxySocket *ps = FROMFIELD(s, LocalProxySocket, sock);
|
||||
LocalProxySocket *ps = container_of(s, LocalProxySocket, sock);
|
||||
|
||||
if (ps->from_cmd < 0)
|
||||
return;
|
||||
@ -252,7 +252,7 @@ static void sk_localproxy_set_frozen (Socket *s, int is_frozen)
|
||||
|
||||
static const char * sk_localproxy_socket_error (Socket *s)
|
||||
{
|
||||
LocalProxySocket *ps = FROMFIELD(s, LocalProxySocket, sock);
|
||||
LocalProxySocket *ps = container_of(s, LocalProxySocket, sock);
|
||||
return ps->error;
|
||||
}
|
||||
|
||||
|
30
unix/uxpty.c
30
unix/uxpty.c
@ -1041,7 +1041,7 @@ static const char *pty_init(Frontend *frontend, Backend **backend_handle,
|
||||
|
||||
static void pty_reconfig(Backend *be, Conf *conf)
|
||||
{
|
||||
Pty *pty = FROMFIELD(be, Pty, backend);
|
||||
Pty *pty = container_of(be, Pty, backend);
|
||||
/*
|
||||
* We don't have much need to reconfigure this backend, but
|
||||
* unfortunately we do need to pick up the setting of Close On
|
||||
@ -1055,7 +1055,7 @@ static void pty_reconfig(Backend *be, Conf *conf)
|
||||
*/
|
||||
static void pty_free(Backend *be)
|
||||
{
|
||||
Pty *pty = FROMFIELD(be, Pty, backend);
|
||||
Pty *pty = container_of(be, Pty, backend);
|
||||
|
||||
/* Either of these may fail `not found'. That's fine with us. */
|
||||
del234(ptys_by_pid, pty);
|
||||
@ -1108,7 +1108,7 @@ static void pty_try_write(Pty *pty)
|
||||
*/
|
||||
static int pty_send(Backend *be, const char *buf, int len)
|
||||
{
|
||||
Pty *pty = FROMFIELD(be, Pty, backend);
|
||||
Pty *pty = container_of(be, Pty, backend);
|
||||
|
||||
if (pty->master_fd < 0)
|
||||
return 0; /* ignore all writes if fd closed */
|
||||
@ -1138,7 +1138,7 @@ static void pty_close(Pty *pty)
|
||||
*/
|
||||
static int pty_sendbuffer(Backend *be)
|
||||
{
|
||||
/* Pty *pty = FROMFIELD(be, Pty, backend); */
|
||||
/* Pty *pty = container_of(be, Pty, backend); */
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1147,7 +1147,7 @@ static int pty_sendbuffer(Backend *be)
|
||||
*/
|
||||
static void pty_size(Backend *be, int width, int height)
|
||||
{
|
||||
Pty *pty = FROMFIELD(be, Pty, backend);
|
||||
Pty *pty = container_of(be, Pty, backend);
|
||||
struct winsize size;
|
||||
|
||||
pty->term_width = width;
|
||||
@ -1168,7 +1168,7 @@ static void pty_size(Backend *be, int width, int height)
|
||||
*/
|
||||
static void pty_special(Backend *be, SessionSpecialCode code, int arg)
|
||||
{
|
||||
/* Pty *pty = FROMFIELD(be, Pty, backend); */
|
||||
/* Pty *pty = container_of(be, Pty, backend); */
|
||||
/* Do nothing! */
|
||||
return;
|
||||
}
|
||||
@ -1179,7 +1179,7 @@ static void pty_special(Backend *be, SessionSpecialCode code, int arg)
|
||||
*/
|
||||
static const SessionSpecial *pty_get_specials(Backend *be)
|
||||
{
|
||||
/* Pty *pty = FROMFIELD(be, Pty, backend); */
|
||||
/* Pty *pty = container_of(be, Pty, backend); */
|
||||
/*
|
||||
* Hmm. When I get round to having this actually usable, it
|
||||
* might be quite nice to have the ability to deliver a few
|
||||
@ -1191,43 +1191,43 @@ static const SessionSpecial *pty_get_specials(Backend *be)
|
||||
|
||||
static int pty_connected(Backend *be)
|
||||
{
|
||||
/* Pty *pty = FROMFIELD(be, Pty, backend); */
|
||||
/* Pty *pty = container_of(be, Pty, backend); */
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static int pty_sendok(Backend *be)
|
||||
{
|
||||
/* Pty *pty = FROMFIELD(be, Pty, backend); */
|
||||
/* Pty *pty = container_of(be, Pty, backend); */
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void pty_unthrottle(Backend *be, int backlog)
|
||||
{
|
||||
/* Pty *pty = FROMFIELD(be, Pty, backend); */
|
||||
/* Pty *pty = container_of(be, Pty, backend); */
|
||||
/* do nothing */
|
||||
}
|
||||
|
||||
static int pty_ldisc(Backend *be, int option)
|
||||
{
|
||||
/* Pty *pty = FROMFIELD(be, Pty, backend); */
|
||||
/* Pty *pty = container_of(be, Pty, backend); */
|
||||
return 0; /* neither editing nor echoing */
|
||||
}
|
||||
|
||||
static void pty_provide_ldisc(Backend *be, Ldisc *ldisc)
|
||||
{
|
||||
/* Pty *pty = FROMFIELD(be, Pty, backend); */
|
||||
/* Pty *pty = container_of(be, Pty, backend); */
|
||||
/* This is a stub. */
|
||||
}
|
||||
|
||||
static void pty_provide_logctx(Backend *be, LogContext *logctx)
|
||||
{
|
||||
/* Pty *pty = FROMFIELD(be, Pty, backend); */
|
||||
/* Pty *pty = container_of(be, Pty, backend); */
|
||||
/* This is a stub. */
|
||||
}
|
||||
|
||||
static int pty_exitcode(Backend *be)
|
||||
{
|
||||
Pty *pty = FROMFIELD(be, Pty, backend);
|
||||
Pty *pty = container_of(be, Pty, backend);
|
||||
if (!pty->finished)
|
||||
return -1; /* not dead yet */
|
||||
else
|
||||
@ -1236,7 +1236,7 @@ static int pty_exitcode(Backend *be)
|
||||
|
||||
static int pty_cfg_info(Backend *be)
|
||||
{
|
||||
/* Pty *pty = FROMFIELD(be, Pty, backend); */
|
||||
/* Pty *pty = container_of(be, Pty, backend); */
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
14
unix/uxser.c
14
unix/uxser.c
@ -350,7 +350,7 @@ static void serial_close(Serial *serial)
|
||||
|
||||
static void serial_free(Backend *be)
|
||||
{
|
||||
Serial *serial = FROMFIELD(be, Serial, backend);
|
||||
Serial *serial = container_of(be, Serial, backend);
|
||||
|
||||
serial_close(serial);
|
||||
|
||||
@ -361,7 +361,7 @@ static void serial_free(Backend *be)
|
||||
|
||||
static void serial_reconfig(Backend *be, Conf *conf)
|
||||
{
|
||||
Serial *serial = FROMFIELD(be, Serial, backend);
|
||||
Serial *serial = container_of(be, Serial, backend);
|
||||
|
||||
/*
|
||||
* FIXME: what should we do if this returns an error?
|
||||
@ -465,7 +465,7 @@ static void serial_try_write(Serial *serial)
|
||||
*/
|
||||
static int serial_send(Backend *be, const char *buf, int len)
|
||||
{
|
||||
Serial *serial = FROMFIELD(be, Serial, backend);
|
||||
Serial *serial = container_of(be, Serial, backend);
|
||||
|
||||
if (serial->fd < 0)
|
||||
return 0;
|
||||
@ -481,7 +481,7 @@ static int serial_send(Backend *be, const char *buf, int len)
|
||||
*/
|
||||
static int serial_sendbuffer(Backend *be)
|
||||
{
|
||||
Serial *serial = FROMFIELD(be, Serial, backend);
|
||||
Serial *serial = container_of(be, Serial, backend);
|
||||
return bufchain_size(&serial->output_data);
|
||||
}
|
||||
|
||||
@ -499,7 +499,7 @@ static void serial_size(Backend *be, int width, int height)
|
||||
*/
|
||||
static void serial_special(Backend *be, SessionSpecialCode code, int arg)
|
||||
{
|
||||
Serial *serial = FROMFIELD(be, Serial, backend);
|
||||
Serial *serial = container_of(be, Serial, backend);
|
||||
|
||||
if (serial->fd >= 0 && code == SS_BRK) {
|
||||
tcsendbreak(serial->fd, 0);
|
||||
@ -534,7 +534,7 @@ static int serial_sendok(Backend *be)
|
||||
|
||||
static void serial_unthrottle(Backend *be, int backlog)
|
||||
{
|
||||
Serial *serial = FROMFIELD(be, Serial, backend);
|
||||
Serial *serial = container_of(be, Serial, backend);
|
||||
serial->inbufsize = backlog;
|
||||
serial_uxsel_setup(serial);
|
||||
}
|
||||
@ -559,7 +559,7 @@ static void serial_provide_logctx(Backend *be, LogContext *logctx)
|
||||
|
||||
static int serial_exitcode(Backend *be)
|
||||
{
|
||||
Serial *serial = FROMFIELD(be, Serial, backend);
|
||||
Serial *serial = container_of(be, Serial, backend);
|
||||
if (serial->fd >= 0)
|
||||
return -1; /* still connected */
|
||||
else
|
||||
|
Reference in New Issue
Block a user