/***************************************************************************** * AreaFix for HPT (FTN NetMail/EchoMail Tosser) ***************************************************************************** * Copyright (C) 2000 * * Lev Serebryakov * * Fido: 2:5030/661 * Internet: lev@serebryakov.spb.ru * St.Petersburg, Russia * * This file is part of HTICK. * * HTICK 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, or (at your option) any * later version. * * HPT 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 HPT; see the file COPYING. If not, write to the Free * Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. ***************************************************************************** * $Id: filecase.c,v 1.5 2002/05/30 14:26:07 stas Stab $ *****************************************************************************/ #include #include #include #include #include #if !defined(__TURBOC__) && !(defined(_MSC_VER) && (_MSC_VER >= 1200)) #include #endif #include #include #include #include static int dosallowin83(int c) { static char dos_allow[] = "!@#$%^&()~`'-_{}."; if((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') || strchr(dos_allow,c)) return 1; return 0; } int isDOSLikeName(char *name) { int nl,el,ec,uc,lc,f; char *p = name; nl=el=ec=uc=lc=0; f=1; while (*p) { if(!dosallowin83(*p)) { f=0; break; } if('.'==*p) ec++; else { if (!ec) nl++; else el++; if(isalpha(*p)) { if(isupper(*p)) uc++; else lc++; } } p++; } return (f && ec < 2 && el < 4 && nl < 9 && (!lc || !uc)); } char *MakeProperCase(char *name) { if(isDOSLikeName(name)) { switch(config->convertShortNames) { case cUpper: return strUpper(name); case cLower: return strLower(name); default: return name; } } else { switch(config->convertLongNames) { case cUpper: return strUpper(name); case cLower: return strLower(name); default: return name; } } }