📄 truename.c
字号:
/*
TRUENAME.C
revised from version in first and second printings of UNDOCUMENTED DOS, pp.
190-191.
To use in DOS 4 and higher (which have an undocumented TRUENAME internal
command built into COMMAND.COM!), use .\TRUENAME rather than TRUENAME
*/
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include <dos.h>
#ifdef __TURBOC__
#define _asm asm
#endif
void ret(char *s, int retval) { puts(s); exit(retval); }
char far *truename(char far *s, char far *d)
{
char far *s2;
/* INT 21h AH=60h doesn't like leading or trailing blanks */
while (isspace(*s))
s++;
s2 = s;
while (*s2) s2++;
s2--;
while (isspace(*s2))
*s2-- = 0;
_asm push di
_asm push si
_asm les di, d
_asm lds si, s
_asm mov ah, 60h
_asm int 21h
_asm pop si
_asm pop di
_asm jc error
return d;
error:
return (char far *) 0;
}
main(int argc, char *argv[])
{
char buf[128];
if (argc < 2)
ret("usage: truename <filename>", 1);
if (_osmajor < 3)
ret("requires DOS 3.0 or greater", 1);
if (truename(argv[1], buf))
ret(buf, 0);
else
ret("invalid filename", 1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -