File: file.C.html

package info (click to toggle)
rudiments 0.31-2
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 7,516 kB
  • ctags: 3,248
  • sloc: asm: 23,776; cpp: 22,792; sh: 7,769; ansic: 1,769; makefile: 1,054; xml: 169; perl: 19
file content (147 lines) | stat: -rw-r--r-- 10,555 bytes parent folder | download | duplicates (2)
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147







<pre>
<font color="#0000ff">// Copyright (c) 2003  David Muse</font>
<font color="#0000ff">// See the file COPYING for more information</font>

<font color="#a020f0">#include </font><font color="#ff00ff">&lt;rudiments/groupentry.h&gt;</font>
<font color="#a020f0">#include </font><font color="#ff00ff">&lt;rudiments/passwdentry.h&gt;</font>
<font color="#a020f0">#include </font><font color="#ff00ff">&lt;rudiments/file.h&gt;</font>
<font color="#a020f0">#include </font><font color="#ff00ff">&lt;rudiments/permissions.h&gt;</font>
<font color="#a020f0">#include </font><font color="#ff00ff">&lt;rudiments/datetime.h&gt;</font>
<font color="#a020f0">#include </font><font color="#ff00ff">&lt;stdio.h&gt;</font>

<font color="#a020f0">#ifdef RUDIMENTS_NAMESPACE</font>
<font color="#a52a2a"><b>using</b></font> <font color="#2e8b57"><b>namespace</b></font> rudiments;
<font color="#a020f0">#endif</font>

<font color="#2e8b57"><b>int</b></font> main(<font color="#2e8b57"><b>int</b></font> argc, <font color="#2e8b57"><b>const</b></font> <font color="#2e8b57"><b>char</b></font> **argv) {


        <font color="#0000ff">// remove the file (in case it already exists)</font>
        file::remove(<font color="#ff00ff">&quot;testfile&quot;</font>);


        <font color="#0000ff">// create a new file called &quot;testfile&quot; with rw-rw---- permissions</font>
        <font color="#0000ff">// and initial contents &quot;hello&quot;</font>
        file    fl;
        fl.create(<font color="#ff00ff">&quot;testfile&quot;</font>,permissions::evalPermString(<font color="#ff00ff">&quot;rw-rw----&quot;</font>),<font color="#ff00ff">&quot;hello&quot;</font>);

        printf(<font color="#ff00ff">&quot;testfile:</font><font color="#6a5acd">\n</font><font color="#ff00ff">&quot;</font>);

        <font color="#0000ff">// check for existence</font>
        <font color="#a52a2a"><b>if</b></font> (file::exists(<font color="#ff00ff">&quot;testfile&quot;</font>)) {
                printf(<font color="#ff00ff">&quot;      exists</font><font color="#6a5acd">\n</font><font color="#ff00ff">&quot;</font>);
        } <font color="#a52a2a"><b>else</b></font> {
                printf(<font color="#ff00ff">&quot;      does not exist</font><font color="#6a5acd">\n</font><font color="#ff00ff">&quot;</font>);
        }

        <font color="#0000ff">// display the permissions of the file</font>
        mode_t  mode=fl.getPermissions();
        printf(<font color="#ff00ff">&quot;       permissions: </font><font color="#6a5acd">%s</font><font color="#6a5acd">\n</font><font color="#ff00ff">&quot;</font>,permissions::evalPermOctal(mode));


        <font color="#0000ff">// display the name of the user that owns the file</font>
        uid_t   uid=fl.getOwnerUserId();
        <font color="#2e8b57"><b>char</b></font>   *username;
        passwdentry::getName(uid,&amp;username);
        printf(<font color="#ff00ff">&quot;       user       : </font><font color="#6a5acd">%s</font><font color="#6a5acd">\n</font><font color="#ff00ff">&quot;</font>,username);
        <font color="#a52a2a"><b>delete</b></font>[] username;


        <font color="#0000ff">// display the name of the group that owns the file</font>
        gid_t   gid=fl.getOwnerGroupId();
        <font color="#2e8b57"><b>char</b></font>   *groupname;
        groupentry::getName(gid,&amp;groupname);
        printf(<font color="#ff00ff">&quot;       group      : </font><font color="#6a5acd">%s</font><font color="#6a5acd">\n</font><font color="#ff00ff">&quot;</font>,groupname);
        <font color="#a52a2a"><b>delete</b></font>[] groupname;


        <font color="#0000ff">// display the size of the file in bytes</font>
        off64_t size=fl.getSize();
        printf(<font color="#ff00ff">&quot;       size       : </font><font color="#6a5acd">%ld</font><font color="#6a5acd">\n</font><font color="#ff00ff">&quot;</font>,size);


        <font color="#0000ff">// display the size of the file in blocks</font>
        blkcnt_t        blocks=fl.getBlockCount();
        printf(<font color="#ff00ff">&quot;       blocks     : </font><font color="#6a5acd">%ld</font><font color="#6a5acd">\n</font><font color="#ff00ff">&quot;</font>,blocks);


        <font color="#0000ff">// display the file type</font>
        printf(<font color="#ff00ff">&quot;       is a socket: </font><font color="#6a5acd">%d</font><font color="#6a5acd">\n</font><font color="#ff00ff">&quot;</font>,fl.isSocket());
        printf(<font color="#ff00ff">&quot;       is a symlink: </font><font color="#6a5acd">%d</font><font color="#6a5acd">\n</font><font color="#ff00ff">&quot;</font>,fl.isSymbolicLink());
        printf(<font color="#ff00ff">&quot;       is a regular file: </font><font color="#6a5acd">%d</font><font color="#6a5acd">\n</font><font color="#ff00ff">&quot;</font>,fl.isRegularFile());
        printf(<font color="#ff00ff">&quot;       is a block device: </font><font color="#6a5acd">%d</font><font color="#6a5acd">\n</font><font color="#ff00ff">&quot;</font>,fl.isBlockDevice());
        printf(<font color="#ff00ff">&quot;       is a directory: </font><font color="#6a5acd">%d</font><font color="#6a5acd">\n</font><font color="#ff00ff">&quot;</font>,fl.isDirectory());
        printf(<font color="#ff00ff">&quot;       is a character device: </font><font color="#6a5acd">%d</font><font color="#6a5acd">\n</font><font color="#ff00ff">&quot;</font>,fl.isCharacterDevice());
        printf(<font color="#ff00ff">&quot;       is a fifo: </font><font color="#6a5acd">%d</font><font color="#6a5acd">\n</font><font color="#ff00ff">&quot;</font>,fl.isFifo());


        <font color="#0000ff">// display the last time the file was accessed</font>
        <font color="#2e8b57"><b>time_t</b></font> atime=fl.getLastAccessTime();
        <font color="#2e8b57"><b>char</b></font>   *atimestr=datetime::getString(atime);
        printf(<font color="#ff00ff">&quot;       last access      : </font><font color="#6a5acd">%s</font><font color="#6a5acd">\n</font><font color="#ff00ff">&quot;</font>,atimestr);
        <font color="#a52a2a"><b>delete</b></font>[] atimestr;


        <font color="#0000ff">// display the last time the file was modified</font>
        <font color="#2e8b57"><b>time_t</b></font> mtime=fl.getLastModificationTime();
        <font color="#2e8b57"><b>char</b></font>   *mtimestr=datetime::getString(mtime);
        printf(<font color="#ff00ff">&quot;       last modification: </font><font color="#6a5acd">%s</font><font color="#6a5acd">\n</font><font color="#ff00ff">&quot;</font>,mtimestr);
        <font color="#a52a2a"><b>delete</b></font>[] mtimestr;


        <font color="#0000ff">// display the last time the file was changed</font>
        <font color="#2e8b57"><b>time_t</b></font> ctime=fl.getLastChangeTime();
        <font color="#2e8b57"><b>char</b></font>   *ctimestr=datetime::getString(ctime);
        printf(<font color="#ff00ff">&quot;       last change      : </font><font color="#6a5acd">%s</font><font color="#6a5acd">\n</font><font color="#ff00ff">&quot;</font>,ctimestr);
        <font color="#a52a2a"><b>delete</b></font>[] ctimestr;


        <font color="#0000ff">// display the device that the file resides on</font>
        dev_t   dev=fl.getDevice();
        printf(<font color="#ff00ff">&quot;       device           : </font><font color="#6a5acd">%d</font><font color="#6a5acd">\n</font><font color="#ff00ff">&quot;</font>,dev);


        <font color="#0000ff">// display the type of the device that the file resides on</font>
        dev_t   devtype=fl.getDeviceType();
        printf(<font color="#ff00ff">&quot;       device type      : </font><font color="#6a5acd">%d</font><font color="#6a5acd">\n</font><font color="#ff00ff">&quot;</font>,devtype);


        <font color="#0000ff">// display the file's first inode</font>
        ino_t   inode=fl.getInode();
        printf(<font color="#ff00ff">&quot;       inode            : </font><font color="#6a5acd">%d</font><font color="#6a5acd">\n</font><font color="#ff00ff">&quot;</font>,inode);


        <font color="#0000ff">// display the number of hard links to the file</font>
        nlink_t nlink=fl.getNumberOfHardLinks();
        printf(<font color="#ff00ff">&quot;       hard links : </font><font color="#6a5acd">%ld</font><font color="#6a5acd">\n</font><font color="#ff00ff">&quot;</font>,nlink);


        <font color="#2e8b57"><b>char</b></font>   *path=<font color="#ff00ff">&quot;/usr/local/firstworks/include/rudiments/file.h&quot;</font>;
        <font color="#2e8b57"><b>char</b></font>   *dirname=file::dirname(path);
        printf(<font color="#ff00ff">&quot;dirname(</font><font color="#6a5acd">%s</font><font color="#ff00ff">)=</font><font color="#6a5acd">%s</font><font color="#6a5acd">\n</font><font color="#ff00ff">&quot;</font>,path,dirname);
        <font color="#a52a2a"><b>delete</b></font>[] dirname;

        <font color="#2e8b57"><b>char</b></font>   *basename=file::basename(path);
        printf(<font color="#ff00ff">&quot;basename(</font><font color="#6a5acd">%s</font><font color="#ff00ff">)=</font><font color="#6a5acd">%s</font><font color="#6a5acd">\n</font><font color="#ff00ff">&quot;</font>,path,basename);
        <font color="#a52a2a"><b>delete</b></font>[] basename;

        basename=file::basename(path,<font color="#ff00ff">&quot;.h&quot;</font>);
        printf(<font color="#ff00ff">&quot;basename(</font><font color="#6a5acd">%s</font><font color="#ff00ff">,</font><font color="#6a5acd">\&quot;</font><font color="#ff00ff">.h</font><font color="#6a5acd">\&quot;</font><font color="#ff00ff">)=</font><font color="#6a5acd">%s</font><font color="#6a5acd">\n</font><font color="#ff00ff">&quot;</font>,path,basename);
        <font color="#a52a2a"><b>delete</b></font>[] basename;

        printf(<font color="#ff00ff">&quot;key=</font><font color="#6a5acd">%d</font><font color="#6a5acd">\n</font><font color="#ff00ff">&quot;</font>,file::generateKey(<font color="#ff00ff">&quot;/&quot;</font>,<font color="#ff00ff">1</font>));

        printf(<font color="#ff00ff">&quot;maxLinks(</font><font color="#6a5acd">%s</font><font color="#ff00ff">)=</font><font color="#6a5acd">%d</font><font color="#6a5acd">\n</font><font color="#ff00ff">&quot;</font>,path,file::maxLinks(path));

        printf(<font color="#ff00ff">&quot;canChangeOwner(</font><font color="#6a5acd">%s</font><font color="#ff00ff">)=</font><font color="#6a5acd">%d</font><font color="#6a5acd">\n</font><font color="#ff00ff">&quot;</font>,path,file::canChangeOwner(path));
}
</pre>