diff --git a/Makefile.tgl b/Makefile.tgl
index 9c9f272..307171a 100644
--- a/Makefile.tgl
+++ b/Makefile.tgl
@@ -1,4 +1,4 @@
-TGL_OBJECTS=${OBJ}/mtproto-common.o ${OBJ}/mtproto-client.o ${OBJ}/queries.o ${OBJ}/structures.o ${OBJ}/binlog.o ${OBJ}/tgl.o ${OBJ}/updates.o ${OBJ}/tg-mime-types.o
+TGL_OBJECTS=${OBJ}/mtproto-common.o ${OBJ}/mtproto-client.o ${OBJ}/queries.o ${OBJ}/structures.o ${OBJ}/binlog.o ${OBJ}/tgl.o ${OBJ}/updates.o ${OBJ}/tg-mime-types.o ${OBJ}/mtproto-utils.o
TLD_OBJECTS=${OBJ}/dump-tl-file.o
GENERATE_OBJECTS=${OBJ}/generate.o
TGL_COMMON_OBJECTS=${OBJ}/tools.o
@@ -14,16 +14,13 @@ dump-tl: ${EXE}/dump-tl-file
${OBJ}/auto/auto.o ${TGL_OBJECTS}: ${AUTO}/constants.h ${AUTO}/auto-header.h
-${OBJ}/mime-types.o: ${srcdir}/mime.types
- ld -r -b binary -o $@ $^
-
${TGL_OBJ_C}: ${OBJ}/%.o: ${srcdir}/tgl/%.c | create_dirs
${CC} ${INCLUDE} ${COMPILE_FLAGS} -iquote ${srcdir}/tgl -c -MP -MD -MF ${DEP}/$*.d -MQ ${OBJ}/$*.o -o $@ $<
${OBJ}/auto/auto.o: ${AUTO}/auto.c
${CC} ${INCLUDE} ${COMPILE_FLAGS} -iquote ${srcdir}/tgl -c -MP -MD -MF ${DEP}/auto/auto.d -MQ ${OBJ}/auto/auto.o -o $@ $<
-${LIB}/libtgl.a: ${TGL_OBJECTS} ${TGL_COMMON_OBJECTS} ${OBJ}/auto/auto.o ${OBJ}/mime-types.o
+${LIB}/libtgl.a: ${TGL_OBJECTS} ${TGL_COMMON_OBJECTS} ${OBJ}/auto/auto.o
ar ruv $@ $^
${EXE}/generate: ${GENERATE_OBJECTS} ${TGL_COMMON_OBJECTS}
@@ -32,7 +29,7 @@ ${EXE}/generate: ${GENERATE_OBJECTS} ${TGL_COMMON_OBJECTS}
${AUTO}/scheme.tlo: ${AUTO}/scheme.tl ${EXE}/tl-parser
${EXE}/tl-parser -e $@ ${AUTO}/scheme.tl
-${AUTO}/scheme.tl: ${srcdir}/tgl/scheme.tl ${srcdir}/tgl/encrypted_scheme.tl ${srcdir}/tgl/binlog.tl ${srcdir}/tgl/append.tl | ${AUTO}
+${AUTO}/scheme.tl: ${srcdir}/tgl/scheme.tl ${srcdir}/tgl/encrypted_scheme.tl ${srcdir}/tgl/binlog.tl ${srcdir}/tgl/append.tl ${srcdir}/tgl/mtproto.tl | ${AUTO}
cat $^ > $@
${AUTO}/scheme2.tl: ${AUTO}/scheme.tl ${EXE}/tl-parser
diff --git a/Makefile.tl-parser b/Makefile.tl-parser
index f248825..ce6c3d9 100644
--- a/Makefile.tl-parser
+++ b/Makefile.tl-parser
@@ -1,3 +1,4 @@
+
TL_PARSER_OBJECTS=${OBJ}/tl-parser.o ${OBJ}/tlc.o ${OBJ}/crc32.o
ALL_OBJS+=${TL_PARSER_OBJS}
diff --git a/telegram-adium/.gitignore b/telegram-adium/.gitignore
new file mode 100644
index 0000000..9625059
--- /dev/null
+++ b/telegram-adium/.gitignore
@@ -0,0 +1,2 @@
+telegram-adium.xcodeproj/project.xcworkspace/xcuserdata/
+telegram-adium.xcodeproj/xcuserdata/matj.xcuserdatad/xcdebugger/
diff --git a/telegram-adium/telegram-adium.xcodeproj/project.pbxproj b/telegram-adium/telegram-adium.xcodeproj/project.pbxproj
index d723722..966c115 100644
--- a/telegram-adium/telegram-adium.xcodeproj/project.pbxproj
+++ b/telegram-adium/telegram-adium.xcodeproj/project.pbxproj
@@ -337,6 +337,7 @@
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
@@ -375,11 +376,12 @@
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
- COPY_PHASE_STRIP = YES;
+ COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
+ GCC_OPTIMIZATION_LEVEL = s;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
@@ -422,7 +424,7 @@
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)",
- "$(PROJECT_DIR)/../tgl",
+ "$(PROJECT_DIR)/../tgl/libs",
);
OTHER_CFLAGS = "-DPURPLE_STATIC_PRPL";
PRODUCT_NAME = "$(TARGET_NAME)";
diff --git a/telegram-adium/telegram-adium.xcodeproj/xcuserdata/matj.xcuserdatad/xcschemes/telegram-adium.xcscheme b/telegram-adium/telegram-adium.xcodeproj/xcuserdata/matj.xcuserdatad/xcschemes/telegram-adium.xcscheme
index 843ae82..1176c1d 100644
--- a/telegram-adium/telegram-adium.xcodeproj/xcuserdata/matj.xcuserdatad/xcschemes/telegram-adium.xcscheme
+++ b/telegram-adium/telegram-adium.xcodeproj/xcuserdata/matj.xcuserdatad/xcschemes/telegram-adium.xcscheme
@@ -35,7 +35,7 @@
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
- buildConfiguration = "Release"
+ buildConfiguration = "Debug"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
allowLocationSimulation = "YES">
diff --git a/telegram-adium/telegram-adium.xcodeproj/xcuserdata/matj.xcuserdatad/xcschemes/telegrma-adium Release.xcscheme b/telegram-adium/telegram-adium.xcodeproj/xcuserdata/matj.xcuserdatad/xcschemes/telegrma-adium Release.xcscheme
new file mode 100644
index 0000000..06fa1f4
--- /dev/null
+++ b/telegram-adium/telegram-adium.xcodeproj/xcuserdata/matj.xcuserdatad/xcschemes/telegrma-adium Release.xcscheme
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/telegram-adium/telegram-adium.xcodeproj/xcuserdata/matj.xcuserdatad/xcschemes/xcschememanagement.plist b/telegram-adium/telegram-adium.xcodeproj/xcuserdata/matj.xcuserdatad/xcschemes/xcschememanagement.plist
index 6742db5..743444d 100644
--- a/telegram-adium/telegram-adium.xcodeproj/xcuserdata/matj.xcuserdatad/xcschemes/xcschememanagement.plist
+++ b/telegram-adium/telegram-adium.xcodeproj/xcuserdata/matj.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -9,6 +9,11 @@
orderHint
0
+ telegrma-adium Release.xcscheme
+
+ orderHint
+ 1
+
SuppressBuildableAutocreation
diff --git a/telegram-purple.c b/telegram-purple.c
index 6c0dc29..71ec838 100755
--- a/telegram-purple.c
+++ b/telegram-purple.c
@@ -27,6 +27,7 @@
#include
#include
#include
+#include
#include "purple.h"
#include "notify.h"
@@ -247,24 +248,28 @@ static char *format_document_desc (char *type, char *caption, gint64 size) {
static char *format_message (struct tgl_message *M) {
switch (M->media.type) {
+ /*
case tgl_message_media_audio:
return format_document_desc("AUDIO", "", M->media.audio.size);
break;
case tgl_message_media_audio_encr:
return format_document_desc("AUDIO", "", M->media.encr_audio.size);
break;
+ */
case tgl_message_media_document:
return format_document_desc("DOCUMENT", M->media.document.caption, M->media.document.size);
break;
case tgl_message_media_document_encr:
- return format_document_desc("DOCUMENT", M->media.encr_document.file_name, M->media.encr_document.size);
+ return format_document_desc("DOCUMENT", M->media.encr_document.caption, M->media.encr_document.size);
break;
+ /*
case tgl_message_media_video:
return format_document_desc("VIDEO", M->media.video.caption, M->media.video.size);
break;
case tgl_message_media_video_encr:
return format_document_desc("VIDEO", "", M->media.encr_video.size);
break;
+ */
case tgl_message_media_photo_encr:
return format_document_desc("PHOTO", "", M->media.encr_photo.size);
break;
@@ -1116,10 +1121,51 @@ static void tgprpl_rename_group (PurpleConnection * gc, const char *old_name, Pu
debug ("tgprpl_rename_group()\n");
}
-static void tgprpl_convo_closed (PurpleConnection * gc, const char *who){
+static void tgprpl_convo_closed (PurpleConnection * gc, const char *who) {
debug ("tgprpl_convo_closed()\n");
}
+static char *strdup_replace (char *str, const char *replace, char *with) {
+ char **splitted = g_strsplit (str, replace, -1);
+ char *joined = g_strjoinv ("", splitted);
+ g_strfreev (splitted);
+ return joined;
+}
+
+static const char *tgprpl_normalize_phone_number (const PurpleAccount *account, const char *phone) {
+
+ // remove all special characters
+ char *a = g_strdup(phone);
+ char *b = strdup_replace (a, " ", "");
+ char *c = strdup_replace (b, "/", "");
+ char *normalized = strdup_replace (c, "-", "");
+ g_free (b);
+ g_free (a);
+ g_free (c);
+
+ if (strlen (normalized) >= 22 ||
+ strlen (normalized) < 5) {
+ return NULL;
+ }
+
+ if (normalized[0] != '+') {
+ char *fixed = g_strdup_printf ("+%s", normalized);
+ g_free (normalized);
+ normalized = fixed;
+ }
+
+ regex_t exp;
+ if (regcomp (&exp, "\\+[0-9]+$", REG_EXTENDED) != 0) {
+ warning ("Regex invalid");
+ return NULL;
+ }
+ if (regexec (&exp, normalized, 0, 0, 0) != 0) {
+ return NULL;
+ }
+
+ return normalized;
+}
+
static void tgprpl_set_buddy_icon (PurpleConnection * gc, PurpleStoredImage * img) {
debug ("tgprpl_set_buddy_icon()\n");
@@ -1199,7 +1245,7 @@ static PurplePluginProtocolInfo prpl_info = {
tgprpl_rename_group,
NULL, // buddy_free
tgprpl_convo_closed,
- purple_normalize_nocase,
+ tgprpl_normalize_phone_number,
tgprpl_set_buddy_icon,
NULL, // remove_group
NULL, // get_cb_real_name
diff --git a/tgl b/tgl
index be0fb03..76824c2 160000
--- a/tgl
+++ b/tgl
@@ -1 +1 @@
-Subproject commit be0fb0335bf68c07202f6dd24825db65a4ea1e59
+Subproject commit 76824c29a6dcb424e1109e691d31280a9cbaa954