tidos.pp 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. { %INTERACTIVE }
  2. {
  3. Program to test DOS unit by Peter Vreman.
  4. Only main TP functions are tested (nothing with Interrupts/Break/Verify).
  5. }
  6. {$V-}
  7. program tesidos;
  8. uses dos;
  9. { These should be defined for each operating system to be tested }
  10. { NOEXESUFFIX = No .EXE to prepend to prefix the file with to get }
  11. { a file executable. }
  12. {$ifdef unix}
  13. {$DEFINE NOEXESUFFIX}
  14. {$endif}
  15. {$ifdef amiga}
  16. {$DEFINE NOEXESUFFIX}
  17. {$endif}
  18. procedure TestInfo;
  19. var
  20. dt : DateTime;
  21. ptime : longint;
  22. wday : word;
  23. HSecs : word;
  24. begin
  25. writeln;
  26. writeln('Info Functions');
  27. writeln('**************');
  28. writeln('Dosversion : ',lo(DosVersion),'.',hi(DosVersion));
  29. GetDate(Dt.Year,Dt.Month,Dt.Day,wday);
  30. writeln('Current Date (MM-DD-YYYY) : ',Dt.Month,'-',Dt.Day,'-',Dt.Year,' weekday ',wday);
  31. GetTime(Dt.Hour,Dt.Min,Dt.Sec,HSecs);
  32. writeln('Current Time (HH:MM:SS) : ',Dt.Hour,':',Dt.Min,':',Dt.Sec,' hsecs ',HSecs);
  33. PackTime(Dt,ptime);
  34. writeln('Packed like dos: ',ptime);
  35. UnpackTime(ptime,DT);
  36. writeln('Unpacked again (MM-DD-YYYY) ',Dt.Month,'-',Dt.Day,'-',Dt.Year,' ',Dt.Hour,':',Dt.Min,':',Dt.Sec);
  37. writeln;
  38. write('Press Enter');
  39. Readln;
  40. end;
  41. procedure TestEnvironment;
  42. var
  43. i : longint;
  44. begin
  45. writeln;
  46. writeln('Environment Functions');
  47. writeln('*********************');
  48. writeln('Amount of environment strings : ',EnvCount);
  49. writeln('GetEnv TERM : ',GetEnv('TERM'));
  50. writeln('GetEnv HOST : ',GetEnv('HOST'));
  51. writeln('GetEnv PATH : ',GetEnv('PATH'));
  52. writeln('GetEnv SHELL: ',GetEnv('SHELL'));
  53. write('Press Enter for all Environment Strings using EnvStr()');
  54. Readln;
  55. for i:=1 to EnvCount do
  56. writeln(EnvStr(i));
  57. write('Press Enter');
  58. Readln;
  59. end;
  60. procedure TestExec;
  61. begin
  62. writeln;
  63. writeln('Exec Functions');
  64. writeln('**************');
  65. write('Press Enter for an Exec of ''hello -good -day''');
  66. Readln;
  67. {$ifndef FPC}
  68. SwapVectors;
  69. {$endif FPC}
  70. {$ifdef noexesuffix}
  71. Exec('hello','-good -day');
  72. {$else}
  73. Exec('hello.exe','-good -day');
  74. {$endif}
  75. {$ifndef FPC}
  76. SwapVectors;
  77. {$endif FPC}
  78. writeln('Exit should be 213 : ',DosExitCode);
  79. writeln('Error code should be 0 : ',DosError);
  80. write('Press Enter');
  81. Readln;
  82. end;
  83. procedure TestDisk;
  84. var
  85. Dir : SearchRec;
  86. DT : DateTime;
  87. begin
  88. writeln;
  89. writeln('Disk Functions');
  90. writeln('**************');
  91. writeln('DiskFree 0 : ',DiskFree(0));
  92. writeln('DiskSize 0 : ',DiskSize(0));
  93. writeln('DiskSize 1 : ',DiskSize(1)); { this is a: on dos ??! }
  94. writeln('DiskSize 3 : ',DiskSize(3)); { this is c: on dos }
  95. {$IFDEF Unix}
  96. AddDisk('/fd0');
  97. writeln('DiskSize 4 : ',DiskSize(4));
  98. {$ENDIF}
  99. write('Press Enter for FindFirst/FindNext Test');
  100. Readln;
  101. FindFirst('*.*',$20,Dir);
  102. while (DosError=0) do
  103. begin
  104. UnpackTime(dir.Time,DT);
  105. Writeln(dir.Name,' ',dir.Size,' ',DT.Year,'-',DT.Month,'-',DT.Day);
  106. FindNext(Dir);
  107. end;
  108. write('Press Enter');
  109. Readln;
  110. end;
  111. procedure TestFile;
  112. var
  113. test,
  114. name,dir,ext : string;
  115. begin
  116. writeln;
  117. writeln('File(name) Functions');
  118. writeln('********************');
  119. {$ifdef unix }
  120. test:='/usr/local/bin/ppc.so';
  121. writeln('FSplit(',test,')');
  122. FSplit(test,dir,name,ext);
  123. writeln('dir: ',dir,' name: ',name,' ext: ',ext);
  124. test:='/usr/bin.1/ppc';
  125. writeln('FSplit(',test,')');
  126. FSplit(test,dir,name,ext);
  127. writeln('dir: ',dir,' name: ',name,' ext: ',ext);
  128. test:='mtools.tar.gz';
  129. writeln('FSplit(',test,')');
  130. FSplit(test,dir,name,ext);
  131. writeln('dir: ',dir,' name: ',name,' ext: ',ext);
  132. Writeln('Expanded dos.pp : ',FExpand('dos.pp'));
  133. Writeln('Expanded ../dos.pp : ',FExpand('../dos.pp'));
  134. Writeln('Expanded /usr/local/dos.pp : ',FExpand('/usr/local/dos.pp'));
  135. Writeln('Expanded ../dos/./../././dos.pp : ',FExpand('../dos/./../././dos.pp'));
  136. test:='../;/usr/;/usr/bin/;/usr/bin;/bin/;';
  137. {$else not linux }
  138. test:='\usr\local\bin\ppc.so';
  139. writeln('FSplit(',test,')');
  140. FSplit(test,dir,name,ext);
  141. writeln('dir: ',dir,' name: ',name,' ext: ',ext);
  142. test:='\usr\bin.1\ppc';
  143. writeln('FSplit(',test,')');
  144. FSplit(test,dir,name,ext);
  145. writeln('dir: ',dir,' name: ',name,' ext: ',ext);
  146. test:='mtools.tar.gz';
  147. writeln('FSplit(',test,')');
  148. FSplit(test,dir,name,ext);
  149. writeln('dir: ',dir,' name: ',name,' ext: ',ext);
  150. Writeln('Expanded dos.pp : ',FExpand('dos.pp'));
  151. Writeln('Expanded ..\dos.pp : ',FExpand('..\dos.pp'));
  152. Writeln('Expanded \usr\local\dos.pp : ',FExpand('\usr\local\dos.pp'));
  153. Writeln('Expanded ..\dos\.\..\.\.\dos.pp : ',FExpand('..\dos\.\..\.\.\dos.pp'));
  154. test:='..\;\usr\;\usr\bin\;\usr\bin;\bin\;';
  155. {$endif not linux}
  156. test:=test+getenv('PATH');
  157. {$ifdef NOEXESUFFIX}
  158. Writeln('FSearch ls: ',FSearch('ls',test));
  159. {$else not noexesuffix}
  160. Writeln('FSearch ls: ',FSearch('ls.exe',test));
  161. {$endif not noexesuffix}
  162. Writeln('Empty FSearch (should return empty string):',FSearch('',test));
  163. write('Press Enter');
  164. Readln;
  165. end;
  166. begin
  167. TestInfo;
  168. TestEnvironment;
  169. TestExec;
  170. TestDisk;
  171. TestFile;
  172. end.