view src/protocols/zephyr/ZPeekPkt.c @ 10810:9a1ced2bc585

[gaim-migrate @ 12463] This makes conversations contact aware, or is a start to it anyway. All messages from the same contact will appear in the same IM tab. Whoever messaged you last is who your messages go to. Don't forget to run make install in the top level src directory, or some plugin will likely crash gaim, as I changed a struct they use. Known bugs include a crash if you close the convo window (clicking the X on the tab doesn't crash however [actually it used to, but i fixed that one already]), and the history plugin inserting history when it shouldn't. There's probably many more tiny bugs. If you're wondering "how does it handle X?" the answer is probably it doesn't. However, I think this is all stuff our CPWs can handle, if I don't have time to fix it first (and I probably won't til friday). committer: Tailor Script <tailor@pidgin.im>
author Tim Ringenbach <marv@pidgin.im>
date Mon, 11 Apr 2005 02:20:34 +0000
parents 43d6c08d7e96
children 64895571248f
line wrap: on
line source

/* This file is part of the Project Athena Zephyr Notification System.
 * It contains source for ZPeekPacket function.
 *
 *	Created by:	Robert French
 *
 *	$Source$
 *	$Author: chipx86 $
 *
 *	Copyright (c) 1987 by the Massachusetts Institute of Technology.
 *	For copying and distribution information, see the file
 *	"mit-copyright.h". 
 */
/* $Header$ */

#ifndef lint
static char rcsid_ZPeekPacket_c[] = "$Header$";
#endif

#include "internal.h"

Code_t ZPeekPacket(buffer, ret_len, from)
    char **buffer;
    int *ret_len;
    struct sockaddr_in *from;
{
    Code_t retval;
    struct _Z_InputQ *nextq;
    
    if ((retval = Z_WaitForComplete()) != ZERR_NONE)
	return (retval);

    nextq =Z_GetFirstComplete();

    *ret_len = nextq->packet_len;
    
    if (!(*buffer = (char *) malloc((unsigned) *ret_len)))
	return (ENOMEM);

    (void) memcpy(*buffer, nextq->packet, *ret_len);

    if (from)
	*from = nextq->from;
	
    return (ZERR_NONE);
}