| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- IMPLEMENTATION MODULE FileName;
- IMPORT InOut, Strings;
- (*----------------------------------------------------------------*)
- PROCEDURE Get(fname: ARRAY OF CHAR; VAR dir,name,ext: ARRAY OF CHAR);
- VAR
- LocalFname : Format;
- L : CARDINAL;
- save : CARDINAL;
-
- BEGIN
- L := LENGTH(fname);
- save := L;
- (* separating the dir part from the filename+ext part *)
- REPEAT
- DEC(save);
- IF fname[save] = "." THEN
- LocalFname.extPos := save + 1;
- LocalFname.extLen := L - LocalFname.extPos ;
- END;
- UNTIL fname[save] = "/";
- LocalFname.namePos := save + 1;
- LocalFname.nameLen := LocalFname.extPos - LocalFname.namePos -1;
- (* now, directory part *)
- LocalFname.dirPos := 0;
- LocalFname.dirLen := save + 1;
- (* PROCEDURE Extract (source: ARRAY OF CHAR; startIndex, numberToExtract: CARDINAL; VAR destination: ARRAY OF CHAR); *)
- Strings.Extract(fname,LocalFname.namePos, LocalFname.nameLen,name);
- Strings.Extract(fname,LocalFname.dirPos, LocalFname.dirLen,dir);
- Strings.Extract(fname,LocalFname.extPos, LocalFname.extLen,ext);
- END Get;
- PROCEDURE GetDir(fname: ARRAY OF CHAR; VAR dir: ARRAY OF CHAR);
- VAR
- Dir, Name, Ext : ARRAY[0..256] OF CHAR;
- BEGIN
- Get(fname,Dir,Name,Ext);
- Strings.Assign(Dir,dir);
- END GetDir;
- PROCEDURE GetName(fname: ARRAY OF CHAR; VAR name: ARRAY OF CHAR);
- VAR
- Dir, Name, Ext : ARRAY[0..256] OF CHAR;
-
- BEGIN
- Get(fname,Dir,Name,Ext);
- Strings.Assign(Name, name);
- END GetName;
- PROCEDURE GetExt(fname: ARRAY OF CHAR; VAR ext: ARRAY OF CHAR);
- VAR
- Dir, Name, Ext : ARRAY[0..256] OF CHAR;
- BEGIN
- Get(fname,Dir,Name,Ext);
- Strings.Assign(Ext,ext);
- END GetExt;
- END FileName.
|