From 4843e5290f2e7060ca5777c64b96e680080644f2 Mon Sep 17 00:00:00 2001 From: Jonathan McDowell Date: Mon, 31 May 2004 23:47:59 +0000 Subject: [PATCH] cscvs to tla changeset 100 Author: noodles Date: 2003/09/30 21:16:14 Adding splitkeys for spliting up keyrings. --- Makefile | 7 ++++-- splitkeys.c | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 splitkeys.c diff --git a/Makefile b/Makefile index 7917088..cd9de0f 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ # # Makefile for onak. # -# $Id: Makefile,v 1.16 2003/06/06 14:02:39 noodles Exp $ +# $Id: Makefile,v 1.17 2003/09/30 21:16:14 noodles Exp $ # CC = gcc @@ -23,7 +23,10 @@ SRCS = armor.c parsekey.c merge.c keyid.c md5.c sha.c main.c getcgi.c stats.c \ keyindex.c mem.c lookup.c add.c keydb_$(DBTYPE).c ll.c hash.c \ gpgwww.c onak-conf.c charfuncs.c sendsync.c log.c -all: .depend $(PROGS) testparse maxpath sixdegrees +all: .depend $(PROGS) testparse maxpath sixdegrees splitkeys + +splitkeys: splitkeys.o $(CORE_OBJS) + $(LINK) -o splitkeys splitkeys.o $(CORE_OBJS) $(LIBS) testparse: main.o $(OBJS) $(LINK) -o testparse main.o $(OBJS) $(LIBS) diff --git a/splitkeys.c b/splitkeys.c new file mode 100644 index 0000000..a2daac6 --- /dev/null +++ b/splitkeys.c @@ -0,0 +1,69 @@ +/* + * splitkeys.c - Split a keyring into smaller chunks. + * + * Jonathan McDowell + * + * Copyright 2003 Project Purple + * + * $Id: splitkeys.c,v 1.1 2003/09/30 21:16:14 noodles Exp $ + */ + +#include +#include +#include +#include +#include + +#include "charfuncs.h" +#include "keystructs.h" +#include "mem.h" +#include "parsekey.h" + +int main(int argc, char *argv[]) +{ + struct openpgp_packet_list *packets = NULL; + struct openpgp_packet_list *list_end = NULL; + struct openpgp_packet_list *tmp = NULL; + int result = 0; + int maxkeys = 10000; + int outfd = -1; + int count = 0; + char splitfile[1024]; + + if (argc > 1) { + maxkeys = atoi(argv[1]); + if (maxkeys == 0) { + fprintf(stderr, + "Couldn't parse %s as a number of keys!\n", + argv[1]); + exit(1); + } + } + + do { + result = read_openpgp_stream(stdin_getchar, NULL, + &packets, maxkeys); + if (packets != NULL) { + list_end = packets; + while (list_end->next != NULL) { + tmp = list_end; + list_end = list_end->next; + if (list_end->next == NULL && + list_end->packet->tag == 6) { + tmp->next = NULL; + } + } + + snprintf(splitfile, 1023, "splitfile-%d.pgp", count); + outfd = open(splitfile, O_WRONLY | O_CREAT, 0664); + write_openpgp_stream(file_putchar, &outfd, + packets); + close(outfd); + free_packet_list(packets); + packets = list_end; + count++; + } + } while (packets != NULL); + + return 0; +} -- 2.30.2