changeset 75:6419cd5286ae

[gaim-migrate @ 85] Translated buddytrans from perl to C. To be swallowed by gaim later. committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Tue, 28 Mar 2000 21:21:33 +0000
parents e16ad7d73cd6
children 4cef3d250f3c
files buddytrans.c
diffstat 1 files changed, 87 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buddytrans.c	Tue Mar 28 21:21:33 2000 +0000
@@ -0,0 +1,87 @@
+#include <fcntl.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+void do_trans(int, int);
+
+int main(int argc, char **argv) {
+	char *srcn;
+	char *destn;
+	int   src;
+	int   dest;
+	char *resp;
+
+
+	printf("Gaim - Buddy List Translator\n");
+	printf("----------------------------\n");
+
+	if (argc != 3) {
+		printf("Syntax: %s buddy.lst gaimlist\n", argv[0]);
+		exit(0);
+	}
+
+	srcn  = argv[1];
+	destn = argv[2];
+
+	if ((src = open(srcn, O_RDONLY)) != -1) {
+		printf("Source=%s, Dest=%s\n", srcn, destn);
+
+		if ((dest = open(destn, O_WRONLY | O_CREAT | O_EXCL)) == -1) {
+			printf("%s exists! Should I continue? ", destn);
+			scanf("%s", resp);
+			if (strchr(resp, 'y') || strchr(resp, 'Y')) {
+				dest = open(destn, O_WRONLY | O_CREAT |
+							O_TRUNC);
+				do_trans(src, dest);
+			} else
+				exit(0);
+		} else
+			do_trans(src, dest);
+		printf("Conversion Complete.\n");
+	} else {
+		printf("Source file must exist!\n\nSyntax: %s buddy.lst gaimlist\n", argv[0]);
+		exit(0);
+	}
+	return 0;
+}
+
+void do_trans(int source, int destin) {
+	FILE *src;
+	FILE *dest;
+	char  line[1024];
+
+	umask(644);
+	src  = fdopen(source, "r");
+	dest = fdopen(destin, "w");
+
+	fprintf(dest, "toc_set_config {m 1\n");
+	while (fgets(line, sizeof line, src)) {
+		line[strlen(line) - 1] = 0;
+		if (strpbrk(line, "abcdefghijklmnopqrstuvwxyz"
+					"ABCDEFGHIJKLMNOPQRSTUVWXYZ")) {
+			char *field, *name;
+			if (line[0] == ' ' || line[0] == '\t' ||
+				line[0] == '\n' || line[0] == '\r' ||
+				line[0] == '\f')
+				field = strdup(line + 1);
+			else
+				field = strdup(line);
+			name = strpbrk(field, " \t\n\r\f");
+			name[0] = 0;
+			name += 2;
+			name[strlen(name) - 1] = 0;
+			printf("%s, %s\n", field, name);
+			if (!strcmp("group", field)) {
+				fprintf(dest, "g %s\n", name);
+			} else if (!strcmp("buddy", field)) {
+				fprintf(dest, "b %s\n", name);
+			}
+		}
+	}
+	fprintf(dest, "}");
+	fclose(src);
+	fclose(dest);
+}