1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
// Copyright (C) INRIA
//
// This file must be used under the terms of the CeCILL.
// This source file is licensed as described in the file COPYING, which
// you should have received as part of this distribution. The terms
// are also available at
// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
function L=dir(str)
mask = int32(61440);
dirtype = 16384;
if argn(2) == 1 then
if type(str) <> 10 then
error(999, msprintf(_("%s: Wrong type for input argument #%d: A string expected.\n"), "dir", 1));
end
files = listfiles(str);
basepath = str;
else
files = listfiles();
basepath = "";
end
n = size(files, "*");
if n==0 then
files = [];
dt = [];
bytes = [];
isd = [];
else
if getos() == "Windows" then
[tmp,k] = gsort(convstr(files, "l"), "lr", "i")
files = files(k)
else
files = gsort(files, "lr", "i");
end
dt = zeros(n, 1);
bytes = zeros(n, 1);
isd(n, 1) = %f;
for k=1:n
if (basepath == "") then
[x,ierr] = fileinfo(files(k));
else
[x,ierr] = fileinfo(basepath + "/" + files(k));
end
if x == [] & ierr== -1 then
[x,ierr] = fileinfo(files(k));
end
if x <> [] then
dt(k) = x(6);
bytes(k) = x(1);
isd(k) = (double(int32(x(2)) & mask) == dirtype);
end
end //for
end //if n==0
L = tlist(["dir", "name", "date", "bytes", "isdir"], files, dt, bytes, isd);
endfunction
|