/* $Id: funcs.cpp,v 1.0 2003/04/21 17:45:48 folkert Exp folkert $
 * $Log: funcs.cpp,v $
 * Revision 1.0  2003/04/21 17:45:48  folkert
 * small fixes
 *
 * Revision 0.95  2003/03/16 14:12:40  folkert
 * *** empty log message ***
 *
 * Revision 0.9  2003/02/20 19:23:36  folkert
 * *** empty log message ***
 *
 * Revision 0.7  2003/02/18 18:41:23  folkert
 * date-conversion now also handles incorrect date-fields
 *
 * Revision 0.6  2003/02/04 21:26:09  folkert
 * made "re:"-stripper strip even more
 *
 * Revision 0.5  2003/02/03 19:48:55  folkert
 * *** empty log message ***
 *
 */

#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include "main.h"
extern "C" {
#include "mem.h"
}

char * stripstring(char *in)
{
	int len = strlen(in), index=0, loop=0;

	char *dummy = (char *)mymalloc(len+1, "stripped string");
	if (!dummy)
	{
		fprintf(stderr, "malloc failure\n");
		exit(1);
	}

	while(loop<len && (in[loop] == ' ' || in[loop] == '\t'))
		loop++;

	while(strncasecmp(&in[loop], "Re:", 3) == 0)
	{
		loop += 3;

		while(loop<len && (in[loop] == ' ' || in[loop] == '\t'))
			loop++;
	}

	while(loop<len)
	{
		dummy[index]=in[loop];
		index++;
		loop++;
	}
	dummy[index] = 0x00;

	index--;
	while(index >= 0 && (dummy[index] ==' ' || dummy[index] == '\t'))
	{
		dummy[index] = 0x00;
		index--;
	}

	return dummy;
}

/* Thu, 30 Jan 2003 18:42:31 +0100 */
char datestringtofields(char *string, int &year, int &month, int &day, int &wday, int &hour, int &minute, int &second, char **timezone)
{
	char *curpos;

	for(unsigned int loop=0; loop<strlen(string); loop++)
	{
		if (unlikely(string[loop] == '\t'))
			string[loop] = ' ';
	}

	/* weekday */
	char *dummy = strchr(string, ',');
	if (!dummy)
		return 0;
	*dummy = 0x00;

	while(*string == ' ')
		string++;
	if (strcmp(string, "Sun") == 0)
		wday = 1;
	else if (strcmp(string, "Mon") == 0)
		wday = 2;
	else if (strcmp(string, "Tue") == 0)
		wday = 3;
	else if (strcmp(string, "Wed") == 0)
		wday = 4;
	else if (strcmp(string, "Thu") == 0)
		wday = 5;
	else if (strcmp(string, "Fri") == 0)
		wday = 6;
	else if (strcmp(string, "Sat") == 0)
		wday = 7;

	/* day of month */
	curpos = dummy + 1;
	while (*curpos == ' ')
		curpos++;
	dummy = strchr(curpos, ' ');
	if (!dummy)
		return 0;
	*dummy = 0x00;
	day = atoi(curpos);

	/* month */
	curpos = dummy + 1;
	while (*curpos == ' ')
		curpos++;
	dummy = strchr(curpos, ' ');
	if (!dummy)
		return 0;
	*dummy = 0x00;
	if (strcmp(curpos, "Jan") == 0)
		month = 1;
	else if (strcmp(curpos, "Feb") == 0)
		month = 2;
	else if (strcmp(curpos, "Mar") == 0)
		month = 3;
	else if (strcmp(curpos, "Apr") == 0)
		month = 4;
	else if (strcmp(curpos, "May") == 0)
		month = 5;
	else if (strcmp(curpos, "Jun") == 0)
		month = 6;
	else if (strcmp(curpos, "Jul") == 0)
		month = 7;
	else if (strcmp(curpos, "Aug") == 0)
		month = 8;
	else if (strcmp(curpos, "Sep") == 0)
		month = 9;
	else if (strcmp(curpos, "Oct") == 0)
		month = 10;
	else if (strcmp(curpos, "Nov") == 0)
		month = 11;
	else if (strcmp(curpos, "Dec") == 0)
		month = 12;

	/* year */
	curpos = dummy + 1;
	while (*curpos == ' ')
		curpos++;
	dummy = strchr(curpos, ' ');
	if (!dummy)
		return 0;
	*dummy = 0x00;
	year = atoi(curpos);

	/* hour */
	curpos = dummy + 1;
	dummy = strchr(curpos, ':');
	if (!dummy)
		return 0;
	*dummy = 0x00;
	hour = atoi(curpos);

	/* minute */
	curpos = dummy + 1;
	dummy = strchr(curpos, ':');
	if (!dummy)
		return 0;
	*dummy = 0x00;
	minute = atoi(curpos);

	/* second */
	curpos = dummy + 1;
	dummy = strchr(curpos, ' ');
	if (!dummy)
		return 0;
	*dummy = 0x00;
	second = atoi(curpos);

	/* timezone */
	curpos = dummy + 1;
	while( *curpos == ' ')
		curpos++;
	dummy = strchr(curpos, ' ');
	if (dummy)
		*dummy = 0x00;
	if (strlen(curpos) > 0)
		*timezone = curpos;
	else
		*timezone = NULL;

	return 1;
}


syntax highlighted by Code2HTML, v. 0.9.1