/*
**
** Copyright (C) 1993 Swedish University Network (SUNET)
**
**
** This program is developed by UDAC, Uppsala University by commission
** of the Swedish University Network (SUNET).
**
** This program 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.
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITTNESS 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., 675 Mass Ave, Cambridge, MA 02139, USA.
**
**
** Martin.Wendel@its.uu.se
** Torbjorn.Wictorin@its.uu.se
**
** ITS
** P.O. Box 887
** S-751 08 Uppsala
** Sweden
**
*/
#include "emil.h"
void
macify_filename(struct message *m)
{
char *name;
char *appletype;
if (m->sd->name == NULL)
m->sd->name = NEWSTR("noname");
fix_filename(m);
for (name = m->sd->name; *name != '\0'; name++)
{
switch (*name)
{
case ':':
*name = '-';
break;
default:
break;
}
if (*name & 0x80)
*name = '_';
}
if (m->sd->appletype == NULL)
{
m->sd->appletype = (char *)Yalloc(9);
if (m->sd->type == NULL)
strncpy(m->sd->appletype, "AURL ", 8);
else
{
if ((appletype = confextr("APPLEFILE", NULL, m->sd->type)) == NULL)
if ((appletype = confextr("APPLEFILE", NULL, "DEFAULT")) == NULL)
strncpy(m->sd->appletype, "AURL ", 8);
if (appletype != NULL)
strncpy(m->sd->appletype, appletype, 8);
}
}
}
void
dosify_filename(struct message *m)
{
char *name;
char *extension;
int i;
if (m->sd->name == NULL)
return;
fix_filename(m);
extension = (char *)getextension(m->sd->name);
for (name = m->sd->name, i = 0; *name != '\0'; name++, i++)
{
if ((name + 1 == extension) || i == 8)
break;
switch (*name)
{
case '\\':
*name = '-';
break;
case '.':
*name = '-';
default:
break;
}
if (*name & 0x80)
*name = '_';
}
}
void
unixify_filename(struct message *m)
{
char *name;
if (m->sd->name == NULL)
return;
fix_filename(m);
for (name = m->sd->name; *name != '\0'; name++)
{
switch (*name)
{
case '/':
*name = '-';
break;
default:
break;
}
if (*name & 0x80)
*name = '_';
}
}
char *
getextension(char *inb)
{
char *c;
c = NULL;
if (inb == NULL)
return(NULL);
for (; *inb != '\0'; inb++)
if (*inb == '.')
c = inb;
return(c);
}
void fix_filename(struct message *m)
{
char *extension, *name;
extension = getextension(m->sd->name);
if (m->sd->name == NULL)
m->sd->name = NEWSTR("noname");
if (m->sd->type != NULL)
if ((m->sd->nameext = confextr("UUENCODE", NULL, m->sd->type)) == NULL)
m->sd->nameext = confextr("UUENCODE", NULL, "DEFAULT");
if (m->sd->nameext == NULL)
return;
if (extension == NULL || cmatch(m->sd->nameext, extension) == FALSE)
{
name = (char *)Yalloc(strlen(m->sd->name) + strlen(m->sd->nameext) + 2);
sprintf(name, "%s%s", m->sd->name, m->sd->nameext);
}
return;
}
syntax highlighted by Code2HTML, v. 0.9.1