Logo Search packages:      
Sourcecode: p3scan version File versions  Download package

ripmime-api.c

/*----------------------------------------
 * ripmime-api
 *
 * Written by Paul L Daniels
 * pldaniels@pldaniels.com
 *
 * (C)2001 P.L.Daniels
 * http://www.pldaniels.com/ripmime
 *
 */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
#include <time.h>
#include <errno.h>
#include <syslog.h>

#include "logger.h"
#include "ffget.h"
#include "strstack.h"
#include "mime.h"
#include "MIME_headers.h"
#include "ripmime-api.h"

char defaultdir[] = ".";
char version[] = "v1.4.0.1 - 30/08/2004 (C) PLDaniels http://www.pldaniels.com/ripmime";

/*-----------------------------------------------------------------\
 Function Name    : RIPMIME_init
 Returns Type     : int
      ----Parameter List
      1. struct RIPMIME_globals *glb, 
      ------------------
 Exit Codes : 
 Side Effects     : 
--------------------------------------------------------------------
 Comments:
 
--------------------------------------------------------------------
 Changes:
 
\------------------------------------------------------------------*/
int RIPMIME_init (struct RIPMIME_object *rm)
{
      rm->outputdir = defaultdir;
      rm->mailpack = NULL;

      LOGGER_set_output_mode(_LOGGER_STDOUT);
      MIME_init();
      MIME_set_uniquenames(1);
      MIME_set_paranoid(0);
      MIME_set_renamemethod(_MIME_RENAME_METHOD_INFIX);
      MIME_set_verbosity(0);


      return 0;
}


/*-----------------------------------------------------------------\
 Function Name    : main
 Returns Type     : int
      ----Parameter List
      1. int argc, 
      2.  char **argv, 
      ------------------
 Exit Codes : 
 Side Effects     : 
--------------------------------------------------------------------
 Comments:
 
--------------------------------------------------------------------
 Changes:
 
\------------------------------------------------------------------*/
int RIPMIME_decode( struct RIPMIME_object *rm, char *mailpack, char *outputdir )
{
      int result = 0;

      if (!mailpack)
      {
            LOGGER_log("%s:%d:RIPMIME_decode: mailpack filename is NULL\n",FL);
            return 1;
      } else {
            rm->mailpack = strdup(mailpack);
      }


      if (!outputdir)
      {
            LOGGER_log("%s:%d:RIPMIME_decode: output directory is NULL\n",FL);
            return 1;
      } else {
            rm->outputdir = strdup(outputdir);
      }

      // Fire up the randomizer

      srand (time (NULL));

      // clean up the output directory name if required (remove any trailing /'s, as suggested by James Cownie 03/02/2001

      if (rm->outputdir[strlen (rm->outputdir) - 1] == '/')
      {
            rm->outputdir[strlen (rm->outputdir) - 1] = '\0';
      }

      // Create the output directory required as specified by the -d parameter

      if (rm->outputdir != defaultdir)
      {
            result = mkdir (rm->outputdir, S_IRWXU);

            // if we had a problem creating a directory, and it wasn't just
            // due to the directory already existing, then we have a bit of
            // a problem on our hands, hence, report it.
            //

            if ((result == -1) && (errno != EEXIST))
            {
                  fprintf (stderr, "ripMIME: Cannot create directory '%s' (%s)\n",
                              rm->outputdir, strerror (errno));
                  return -1;
            }
      }

      // Unpack the contents

      MIMEH_set_outputdir(rm->outputdir);
      MIME_unpack (rm->outputdir, rm->mailpack, 0);

      // do any last minute things

      MIME_close ();

      return 0;

}

/*-END-----------------------------------------------------------*/

Generated by  Doxygen 1.6.0   Back to index