« t_jis2sjis::sjis 少し高速化 | メイン | Nyaryutia3 (ver3.2004.06.27) Release »
2004年06月27日
P2SC
P2SC : %ほげ%ほげ とかいうファイル名を標準的な形式にリネームするものです。
Download file
きれいじゃないけど、カーネル公開
void CP2scDlg::OnEditchangePath()
{
UpdateData(TRUE);
unsigned char buff[MAX_FLEN+1];
unsigned char *q;
unsigned char *t1, *t2;
const unsigned char *p, *e;
const int cstep = 16;
char *cnum = "0123456789ABCDEFabcdef";
// 0123456789
// 012345
// 012345
const unsigned char nummap[] = { 0,1,2,3,4,5,6,7,8,9, 10,11,12,13,14,15, 10,11,12,13,14,15 };
p = (unsigned char *)(LPCTSTR)m_tgt;
q = buff;
// get end
for(e = p; *e != '\0' ;e++);
for(;;)
{
// Copy not %..
for(;( *p != '%' )&&( *p != '\0' ) ;)
{
*q = *p; q++; p++; // COPY CHAR
}
// check eof
if( *p == '\0' ) break;
// this is '%'!!!
// if( *p == '%' ) break;
// check end
if( (e - p) <= 2 )
{
// copy mod
for(; *p != '\0' ;)
{
*q = *p; q++; p++; // COPY CHAR
};
break;
}
t1 =(unsigned char *)strchr( cnum, (const char)*(p+1) );
t2 =(unsigned char *)strchr( cnum, (const char)*(p+2) );
if( t1 && t2 )
{
*q = (nummap[ t1-(const unsigned char*)cnum ] * cstep )
+(nummap[ t2-(const unsigned char*)cnum ] );
q++;
p+=3;
}else{
// not cmp !!!
*q++ = '%';
p++;
}
}
*q = '\0';
m_rep = buff;
UpdateData(FALSE);
}
投稿者 kata : 2004年06月27日 15:13
Trackback Pings
このエントリーのトラックバックURL:
http://katakuri.sakura.ne.jp/~kata/mt-tb.cgi/2