pidgin/pidgin

Use Meson summary() function.

2021-07-27, Elliott Sales de Andrade
cb640ea0f315
Use Meson summary() function.

Now that we require at least 0.52, we can use Meson's builtin summary printing to display the results of configuration.

Testing Done:
Configured with defaults, and with pixmaps disabled to trigger the warning: https://asciinema.org/a/mV2oxOoVCJNdmrPwgqqUJ3mkU?t=17

Reviewed at https://reviews.imfreedom.org/r/848/
/* This file is part of the Project Athena Zephyr Notification System.
* It contains source for the ZParseNotice function.
*
* Created by: Robert French
*
* Copyright (c) 1987,1991 by the Massachusetts Institute of Technology.
* For copying and distribution information, see the file
* "mit-copyright.h".
*/
#include "internal.h"
#include <gio/gio.h>
#include <purple.h>
/* Assume that strlen is efficient on this machine... */
#define next_field(ptr) ptr += strlen (ptr) + 1
#if defined (__GNUC__) && defined (__vax__)
#undef next_field
static __inline__ char * Istrend (char *str) {
/*
* This should be faster on VAX models outside the 2 series. Don't
* use it if you are using MicroVAX 2 servers. If you are using a
* VS2 server, use something like
* #define next_field(ptr) while(*ptr++)
* instead of this code.
*
* This requires use of GCC to get the optimized code, but
* everybody uses GCC, don't they? :-)
*/
register char *str2 asm ("r1");
/* Assumes that no field is longer than 64K.... */
asm ("locc $0,$65535,(%1)" : "=r" (str2) : "r" (str) : "r0");
return str2;
}
#define next_field(ptr) ptr = Istrend (ptr) + 1
#endif
#ifdef mips
#undef next_field
/*
* The compiler doesn't optimize this macro as well as it does the
* following function.
*/
#define next_fieldXXX(ptr) do{register unsigned c1,c2;c1= *ptr; \
while((ptr++,c2= *ptr,c1)&&(ptr++,c1= *ptr,c2));}while(0)
static char *next_field_1 (s) char *s; {
/*
* Calling overhead is still present, but this routine is faster
* than strlen, and doesn't bother with some of the other math
* that we'd just have to undo later anyways.
*/
register unsigned c1 = *s, c2;
while (1) {
s++; c2 = *s; if (c1 == 0) break;
s++; c1 = *s; if (c2 == 0) break;
s++; c2 = *s; if (c1 == 0) break;
s++; c1 = *s; if (c2 == 0) break;
}
return s;
}
#define next_field(ptr) ptr=next_field_1(ptr)
#endif
Code_t
ZParseNotice(char *buffer, int len, ZNotice_t *notice)
{
char *ptr, *end;
unsigned long temp;
int maj, numfields, i;
#ifdef __LINE__
int lineno;
/* Note: This definition of BAD eliminates lint and compiler
* complains about the "while (0)", but require that the macro not
* be used as the "then" part of an "if" statement that also has
* an "else" clause.
*/
#define BAD_PACKET {lineno=__LINE__;goto badpkt;}
/* This one gets lint/compiler complaints. */
/*#define BAD do{lineno=__LINE__;goto badpkt;}while(0)*/
#else
#define BAD_PACKET goto badpkt
#endif
(void) memset((char *)notice, 0, sizeof(ZNotice_t));
ptr = buffer;
end = buffer+len;
notice->z_packet = buffer;
notice->z_version = ptr;
if (strncmp(ptr, ZVERSIONHDR, sizeof(ZVERSIONHDR) - 1))
return (ZERR_VERS);
ptr += sizeof(ZVERSIONHDR) - 1;
if (!*ptr) {
purple_debug_error("zephyr", "ZParseNotice: null version string");
return ZERR_BADPKT;
}
maj = atoi(ptr);
if (maj != ZVERSIONMAJOR)
return (ZERR_VERS);
next_field (ptr);
if (ZReadAscii32(ptr, end-ptr, &temp) == ZERR_BADFIELD)
BAD_PACKET;
numfields = temp;
next_field (ptr);
/*XXX 3 */
numfields -= 2; /* numfields, version, and checksum */
if (numfields < 0) {
GInetAddress *inet_addr = NULL;
gchar *inet_addr_str = NULL;
badpkt:
inet_addr = g_inet_address_new_from_bytes(
(const guint8 *)&notice->z_uid.zuid_addr,
G_SOCKET_FAMILY_IPV4);
inet_addr_str = g_inet_address_to_string(inet_addr);
#ifdef __LINE__
lineno = __LINE__;
purple_debug_error("zephyr", "ZParseNotice: bad packet from %s/%d (line %d)",
inet_addr_str, notice->z_port, lineno);
#else
purple_debug_error("zephyr", "ZParseNotice: bad packet from %s/%d",
inet_addr_str, notice->z_port);
#endif
g_free(inet_addr_str);
g_object_unref(inet_addr);
return ZERR_BADPKT;
}
if (numfields) {
if (ZReadAscii32(ptr, end-ptr, &temp) == ZERR_BADFIELD)
BAD_PACKET;
notice->z_kind = temp;
numfields--;
next_field (ptr);
}
else
BAD_PACKET;
if (numfields) {
if (ZReadAscii(ptr, end-ptr, (unsigned char *)&notice->z_uid,
sizeof(ZUnique_Id_t)) == ZERR_BADFIELD)
BAD_PACKET;
notice->z_time.tv_sec = GUINT64_FROM_BE((guint64)notice->z_uid.tv.tv_sec);
notice->z_time.tv_usec = GUINT64_FROM_BE((guint64)notice->z_uid.tv.tv_usec);
numfields--;
next_field (ptr);
}
else
BAD_PACKET;
if (numfields) {
if (ZReadAscii16(ptr, end-ptr, &notice->z_port) == ZERR_BADFIELD)
BAD_PACKET;
notice->z_port = g_htons(notice->z_port);
numfields--;
next_field (ptr);
}
else
BAD_PACKET;
if (numfields) {
if (ZReadAscii32(ptr, end-ptr, &temp) == ZERR_BADFIELD)
BAD_PACKET;
notice->z_auth = temp;
numfields--;
next_field (ptr);
}
else
BAD_PACKET;
notice->z_checked_auth = ZAUTH_UNSET;
if (numfields) {
if (ZReadAscii32(ptr, end-ptr, &temp) == ZERR_BADFIELD)
BAD_PACKET;
notice->z_authent_len = temp;
numfields--;
next_field (ptr);
}
else
BAD_PACKET;
if (numfields) {
notice->z_ascii_authent = ptr;
numfields--;
next_field (ptr);
}
else
BAD_PACKET;
if (numfields) {
notice->z_class = ptr;
numfields--;
next_field (ptr);
}
else
notice->z_class = "";
if (numfields) {
notice->z_class_inst = ptr;
numfields--;
next_field (ptr);
}
else
notice->z_class_inst = "";
if (numfields) {
notice->z_opcode = ptr;
numfields--;
next_field (ptr);
}
else
notice->z_opcode = "";
if (numfields) {
notice->z_sender = ptr;
numfields--;
next_field (ptr);
}
else
notice->z_sender = "";
if (numfields) {
notice->z_recipient = ptr;
numfields--;
next_field (ptr);
}
else
notice->z_recipient = "";
if (numfields) {
notice->z_default_format = ptr;
numfields--;
next_field (ptr);
}
else
notice->z_default_format = "";
/*XXX*/
if (ZReadAscii32(ptr, end-ptr, &temp) == ZERR_BADFIELD)
BAD_PACKET;
notice->z_checksum = temp;
numfields--;
next_field (ptr);
if (numfields) {
notice->z_multinotice = ptr;
numfields--;
next_field (ptr);
}
else
notice->z_multinotice = "";
if (numfields) {
if (ZReadAscii(ptr, end-ptr, (unsigned char *)&notice->z_multiuid,
sizeof(ZUnique_Id_t)) == ZERR_BADFIELD)
BAD_PACKET;
notice->z_time.tv_sec = GUINT64_FROM_BE((guint64)notice->z_multiuid.tv.tv_sec);
notice->z_time.tv_usec = GUINT64_FROM_BE((guint64)notice->z_multiuid.tv.tv_usec);
numfields--;
next_field (ptr);
}
else
notice->z_multiuid = notice->z_uid;
for (i=0;i<Z_MAXOTHERFIELDS && numfields;i++,numfields--) {
notice->z_other_fields[i] = ptr;
next_field (ptr);
}
notice->z_num_other_fields = i;
for (i=0;i<numfields;i++)
next_field (ptr);
notice->z_message = (void *)ptr;
notice->z_message_len = len-(ptr-buffer);
return (ZERR_NONE);
}