pidgin/pidgin

facebook: Store sent message id in lastmid, to deduplicate echoed messages

This is crappy and error prone, just like the rest of the duplicate
message handling code. It works, but it's going to get some echoes now
and then, particularly in quick moving groupchats.

I'm pretty sure this is a bug in the server, but the official clients
have much more elaborate deduplication built-in, so they won't notice.
#
# Makefile.mingw
#
# Description: Makefile for win32 (mingw) version of Pidgin
#
PIDGIN_TREE_TOP := ..
include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
DEFINES := $(subst -DWIN32_LEAN_AND_MEAN,,$(DEFINES))
##
## VARIABLE DEFINITIONS
##
EXE_TARGET := pidgin
PIDGIN_TARGET := pidgin
EXE_NAME := $(EXE_TARGET).exe
WINAPP := -mwindows
LDFLAGS := $(WINAPP) $(LD_HARDENING_OPTIONS) -Wl,--enable-auto-import -lssp
##
## INCLUDE PATHS
##
PURPLE_INCLUDE_PATHS = \
-I$(PURPLE_TOP) \
-I$(PURPLE_TOP)/win32 \
-I$(PIDGIN_TREE_TOP) \
-I$(GTK_TOP)/include \
-I$(GTK_TOP)/include/glib-2.0 \
-I$(GTK_TOP)/lib/glib-2.0/include
INCLUDE_PATHS += \
$(PURPLE_INCLUDE_PATHS) \
-I$(PIDGIN_TOP) \
-I$(PIDGIN_TOP)/win32 \
$(VV_INCLUDE_PATHS) \
-I$(GTK_TOP)/include/gtk-2.0 \
-I$(GTK_TOP)/include/pango-1.0 \
-I$(GTK_TOP)/include/atk-1.0 \
-I$(GTK_TOP)/include/cairo \
-I$(GTK_TOP)/include/gdk-pixbuf-2.0 \
-I$(GTK_TOP)/lib/gtk-2.0/include \
-I$(LIBSOUP_TOP)/include/libsoup-2.4 \
-I$(LIBGADU_TOP)/include \
-I$(WEBKITGTK_TOP)/include/webkitgtk-1.0
LIB_PATHS += -L$(GTK_TOP)/lib \
-L$(WEBKITGTK_TOP)/lib \
-L$(LIBGADU_TOP)/lib \
-L$(PURPLE_TOP) \
-L$(PIDGIN_TOP) \
$(VV_LIB_PATHS)
##
## SOURCES, OBJECTS
##
PIDGIN_C_SRC = \
gtkaccount.c \
gtkblist-theme-loader.c \
gtkblist-theme.c \
gtkblist.c \
gtkcellrendererexpander.c \
gtkcertmgr.c \
gtkconn.c \
gtkconv.c \
gtkconv-theme.c \
gtkconv-theme-loader.c \
gtkdebug.c \
gtkdialogs.c \
gtkdnd-hints.c \
gtkdocklet.c \
gtkeventloop.c \
gtkicon-theme-loader.c \
gtkicon-theme.c \
gtkidle.c \
gtklog.c \
gtkmedia.c \
gtkmenutray.c \
gtknotify.c \
gtkplugin.c \
gtkpluginpref.c \
gtkpounce.c \
gtkprefs.c \
gtkprivacy.c \
gtkrequest.c \
gtkroomlist.c \
gtksavedstatuses.c \
gtkscrollbook.c \
gtksmiley-manager.c \
gtksmiley-theme.c \
gtksound.c \
gtkstatus-icon-theme.c \
gtkstatusbox.c \
gtkutils.c \
gtkwebview.c \
gtkwebviewtoolbar.c \
gtkwhiteboard.c \
gtkxfer.c \
libpidgin.c \
minidialog.c \
pidgin.c \
pidginstock.c \
pidgintooltip.c \
win32/gtkwin32dep.c \
win32/untar.c
PIDGIN_RC_SRC = win32/pidgin_dll_rc.rc
PIDGIN_OBJECTS = $(PIDGIN_C_SRC:%.c=%.o) $(PIDGIN_RC_SRC:%.rc=%.o)
EXE_RC_SRC = win32/pidgin_exe_rc.rc
EXE_C_SRC = win32/winpidgin.c
EXE_OBJECTS = $(EXE_C_SRC:%.c=%.o) $(EXE_RC_SRC:%.rc=%.o)
##
## LIBRARIES
##
PIDGIN_LIBS = \
-lintl \
-lglib-2.0 \
-lgobject-2.0 \
-lgthread-2.0 \
-lpurple \
-lz \
-lgtk-win32-2.0 \
-latk-1.0 \
-lcairo \
-lpango-1.0 \
-lgdk-win32-2.0 \
-lgdk_pixbuf-2.0 \
-lgdi32 \
-lgadu \
-lwinmm \
$(VV_LIBS) \
-lwebkitgtk-1.0
include $(PIDGIN_COMMON_RULES)
##
## TARGET DEFINITIONS
##
.PHONY: all install install_shallow clean
all: $(EXE_TARGET).exe $(PIDGIN_TARGET).dll
$(MAKE_at) $(MAKE) -C $(PIDGIN_PLUGINS_TOP) -f $(MINGW_MAKEFILE)
gtkdialogs.c: $(PIDGIN_REVISION_H)
win32/pidgin_exe_rc.rc: win32/pidgin_exe_rc.rc.in $(PIDGIN_TREE_TOP)/VERSION
@echo -e " GEN\t$@"
@sed -e 's/@PURPLE_VERSION@/$(PIDGIN_VERSION)/g' \
-e 's/@PURPLE_MAJOR_VERSION@/$(PURPLE_MAJOR_VERSION)/g' \
-e 's/@PURPLE_MINOR_VERSION@/$(PURPLE_MINOR_VERSION)/g' \
-e 's/@PURPLE_MICRO_VERSION@/$(PURPLE_MICRO_VERSION)/g' \
-e 's/@PURPLE_API_VERSION@/$(PURPLE_API_VERSION)/g' \
$@.in > $@
install_shallow: $(PIDGIN_INSTALL_DIR) $(EXE_TARGET).exe $(PIDGIN_TARGET).dll
cp $(EXE_TARGET).exe $(PIDGIN_TARGET).dll $(PIDGIN_INSTALL_DIR)
mkdir -p "$(PIDGIN_INSTALL_DIR)/theme"
cp -r themes/* "$(PIDGIN_INSTALL_DIR)/theme/"
chmod -R 777 "$(PIDGIN_INSTALL_DIR)/theme/"
install: install_shallow all
$(MAKE_at) $(MAKE) -C $(PIDGIN_PLUGINS_TOP) -f $(MINGW_MAKEFILE) install
$(MAKE_at) $(MAKE) -C $(PIDGIN_PIXMAPS_TOP) -f $(MINGW_MAKEFILE) install
win32/pidgin_dll_rc.rc: win32/pidgin_dll_rc.rc.in $(PIDGIN_TREE_TOP)/VERSION
@echo -e " GEN\t$@"
@sed -e 's/@PURPLE_VERSION@/$(PIDGIN_VERSION)/g' \
-e 's/@PURPLE_MAJOR_VERSION@/$(PURPLE_MAJOR_VERSION)/g' \
-e 's/@PURPLE_MINOR_VERSION@/$(PURPLE_MINOR_VERSION)/g' \
-e 's/@PURPLE_MICRO_VERSION@/$(PURPLE_MICRO_VERSION)/g' \
-e 's/@PURPLE_API_VERSION@/$(PURPLE_API_VERSION)/g' \
$@.in > $@
$(EXE_OBJECTS) $(PIDGIN_OBJECTS): $(PIDGIN_CONFIG_H)
gtkdebug.c: gtkdebug.html.h
$(PIDGIN_TARGET).dll $(PIDGIN_TARGET).dll.a: $(PURPLE_DLL).a $(PIDGIN_OBJECTS)
$(CC) -shared $(PIDGIN_OBJECTS) $(LIB_PATHS) $(PIDGIN_LIBS) $(DLL_LD_FLAGS) -Wl,--output-def,$(PIDGIN_TARGET).def,--out-implib,$(PIDGIN_TARGET).dll.a -o $(PIDGIN_TARGET).dll
$(EXE_TARGET).exe: $(PIDGIN_CONFIG_H) $(PIDGIN_DLL).a $(EXE_OBJECTS) $(PIDGIN_TARGET).dll
$(CC) $(EXE_OBJECTS) $(LDFLAGS) -o $(EXE_TARGET).exe
##
## CLEAN RULES
##
clean:
$(MAKE_at) $(MAKE) -C $(PIDGIN_PLUGINS_TOP) -f $(MINGW_MAKEFILE) clean
$(MAKE_at) $(MAKE) -C $(PIDGIN_PIXMAPS_TOP) -f $(MINGW_MAKEFILE) clean
rm -f $(PIDGIN_OBJECTS) $(PIDGIN_RC_SRC) $(EXE_OBJECTS) $(EXE_RC_SRC)
rm -f $(PIDGIN_TARGET).dll $(PIDGIN_TARGET).dll.a $(PIDGIN_TARGET).def
rm -f $(EXE_TARGET).exe
include $(PIDGIN_COMMON_TARGETS)