From a20037b7d47d21ca8c2ef31e6889da76aea2ced8 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Mon, 20 Apr 1998 15:58:36 +0000 Subject: [PATCH] missing --- g10/dearmor.c | 125 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 g10/dearmor.c diff --git a/g10/dearmor.c b/g10/dearmor.c new file mode 100644 index 000000000..5fa038255 --- /dev/null +++ b/g10/dearmor.c @@ -0,0 +1,125 @@ +/* dearmor.c - Armor utility + * Copyright (C) 1998 Free Software Foundation, Inc. + * + * This file is part of GNUPG. + * + * GNUPG is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GNUPG is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include +#include +#include +#include +#include +#include + +#include "errors.h" +#include "iobuf.h" +#include "memory.h" +#include "util.h" +#include "filter.h" +#include "packet.h" +#include "options.h" +#include "main.h" + + +/**************** + * Take an armor file and write it out without armor + */ +int +dearmor_file( const char *fname ) +{ + armor_filter_context_t afx; + IOBUF inp = NULL, out = NULL; + int rc = 0; + int c; + + memset( &afx, 0, sizeof afx); + + /* prepare iobufs */ + if( !(inp = iobuf_open(fname)) ) { + log_error("can't open %s: %s\n", fname? fname: "[stdin]", + strerror(errno) ); + rc = G10ERR_OPEN_FILE; + goto leave; + } + + iobuf_push_filter( inp, armor_filter, &afx ); + + if( !(out = open_outfile( fname, 0 )) ) { + rc = G10ERR_CREATE_FILE; + goto leave; + } + + + while( (c = iobuf_get(inp)) != -1 ) + iobuf_put( out, c ); + + + leave: + if( rc ) + iobuf_cancel(out); + else + iobuf_close(out); + iobuf_close(inp); + return rc; +} + + +/**************** + * Take file and write it out with armor + */ +int +enarmor_file( const char *fname ) +{ + armor_filter_context_t afx; + IOBUF inp = NULL, out = NULL; + int rc = 0; + int c; + + memset( &afx, 0, sizeof afx); + + /* prepare iobufs */ + if( !(inp = iobuf_open(fname)) ) { + log_error("can't open %s: %s\n", fname? fname: "[stdin]", + strerror(errno) ); + rc = G10ERR_OPEN_FILE; + goto leave; + } + + + if( !(out = open_outfile( fname, 1 )) ) { + rc = G10ERR_CREATE_FILE; + goto leave; + } + + afx.what = 4; + afx.hdrlines = "Comment: Use \"gpgm --dearmor\" for unpacking\n"; + iobuf_push_filter( out, armor_filter, &afx ); + + while( (c = iobuf_get(inp)) != -1 ) + iobuf_put( out, c ); + + + leave: + if( rc ) + iobuf_cancel(out); + else + iobuf_close(out); + iobuf_close(inp); + return rc; +} + +