From 229001358707089bbe0982646f5bcde73ca92ece Mon Sep 17 00:00:00 2001 From: Eion Robb Date: Fri, 20 Jul 2018 18:33:33 +1200 Subject: Fix Windows compatibility with latest file transfer changes --- skypeweb/Makefile | 30 +++++++++++++++++++++++++----- skypeweb/purplecompat.h | 7 +++++++ skypeweb/skypeweb_contacts.c | 9 +++++---- 3 files changed, 37 insertions(+), 9 deletions(-) diff --git a/skypeweb/Makefile b/skypeweb/Makefile index e46ddd7..594e3e1 100644 --- a/skypeweb/Makefile +++ b/skypeweb/Makefile @@ -17,11 +17,16 @@ LDFLAGS ?= # Do some nasty OS and purple version detection ifeq ($(OS),Windows_NT) + #only defined on 64-bit windows + PROGFILES32 = ${ProgramFiles(x86)} + ifndef PROGFILES32 + PROGFILES32 = $(PROGRAMFILES) + endif SKYPEWEB_TARGET = libskypeweb.dll - SKYPEWEB_DEST = "$(PROGRAMFILES)/Pidgin/plugins" - SKYPEWEB_ICONS_DEST = "$(PROGRAMFILES)/Pidgin/pixmaps/pidgin/protocols" - SKYPEWEB_THEME_DEST = "$(PROGRAMFILES)/Pidgin/pixmaps/pidgin/emotes/skype" - MAKENSIS = "$(PROGRAMFILES)/NSIS/makensis.exe" + SKYPEWEB_DEST = "$(PROGFILES32)/Pidgin/plugins" + SKYPEWEB_ICONS_DEST = "$(PROGFILES32)/Pidgin/pixmaps/pidgin/protocols" + SKYPEWEB_THEME_DEST = "$(PROGFILES32)/Pidgin/pixmaps/pidgin/emotes/skype" + MAKENSIS = "$(PROGFILES32)/NSIS/makensis.exe" else UNAME_S := $(shell uname -s) @@ -81,7 +86,7 @@ PURPLE_C_FILES := libskypeweb.c $(C_FILES) -.PHONY: all install FAILNOPURPLE clean +.PHONY: all install FAILNOPURPLE clean translations all: $(SKYPEWEB_TARGET) @@ -119,6 +124,21 @@ install-theme: theme mkdir -m $(DIR_PERM) -p $(SKYPEWEB_THEME_DEST) install -m $(FILE_PERM) -p theme $(SKYPEWEB_THEME_DEST)/theme +translations: po/skypeweb.pot + +po/skypeweb.pot: + xgettext $^ -k_ --no-location -o $@ + +po/%.po: po/skypeweb.pot + msgmerge $@ po/skypeweb.pot > tmp-$* + mv -f tmp-$* $@ + +po/%.mo: po/%.po + msgfmt -o $@ $^ + +%-locale-install: po/%.mo + install -D -m $(FILE_PERM) -p po/$(*F).mo $(LOCALEDIR)/$(*F)/LC_MESSAGES/purple-discord.mo + FAILNOPURPLE: echo "You need libpurple development headers installed to be able to compile this plugin" diff --git a/skypeweb/purplecompat.h b/skypeweb/purplecompat.h index 04039ba..d545685 100644 --- a/skypeweb/purplecompat.h +++ b/skypeweb/purplecompat.h @@ -244,6 +244,13 @@ purple_xfer_write_file(PurpleXfer *xfer, const guchar *buffer, gsize size) { (ui_ops && ui_ops->ui_write ? ui_ops->ui_write(xfer, buffer, size) : fwrite(buffer, 1, size, xfer->dest_fp))); return TRUE; } +static inline gssize +purple_xfer_read_file(PurpleXfer *xfer, guchar *buffer, gsize size) { + PurpleXferUiOps *ui_ops = purple_xfer_get_ui_ops(xfer); + gssize got_len = (ui_ops && ui_ops->ui_read ? ui_ops->ui_read(xfer, &buffer, size) : fread(buffer, 1, size, xfer->dest_fp)); + purple_xfer_set_bytes_sent(xfer, purple_xfer_get_bytes_sent(xfer) + got_len); + return got_len; +} #endif #define PURPLE_XFER_TYPE_RECEIVE PURPLE_XFER_RECEIVE #define PURPLE_XFER_TYPE_SEND PURPLE_XFER_SEND diff --git a/skypeweb/skypeweb_contacts.c b/skypeweb/skypeweb_contacts.c index 6846629..d6f146e 100644 --- a/skypeweb/skypeweb_contacts.c +++ b/skypeweb/skypeweb_contacts.c @@ -614,11 +614,13 @@ skypeweb_xfer_send_contents_reader(PurpleHttpConnection *con, gchar *buf, size_t { SkypeWebFileTransfer *swft = user_data; PurpleXfer *xfer = swft->xfer; - gsize read; + gsize read; + purple_debug_info("skypeweb", "Asked %d bytes from offset %d\n", len, offset); purple_xfer_set_bytes_sent(xfer, offset); - read = purple_xfer_read_file(xfer, buf, len); - purple_debug_info("skypeweb", "Read %d bytes\n"); + read = purple_xfer_read_file(xfer, (guchar *)buf, len); + purple_debug_info("skypeweb", "Read %d bytes\n", read); + cb(con, TRUE, read != len, read); } @@ -670,7 +672,6 @@ static void skypeweb_got_object_for_file(PurpleHttpConnection *http_conn, PurpleHttpResponse *response, gpointer user_data) { SkypeWebFileTransfer *swft = user_data; - SkypeWebAccount *sa = swft->sa; PurpleXfer *xfer = swft->xfer; JsonParser *parser; JsonNode *node; -- cgit v1.2.3