user more functions
This commit is contained in:
parent
7cbf60faeb
commit
13613cab4d
55
shperm.c
55
shperm.c
@ -25,9 +25,7 @@ int linesNo = 0;
|
|||||||
int maxUsername = 0;
|
int maxUsername = 0;
|
||||||
int maxGroupname = 0;
|
int maxGroupname = 0;
|
||||||
|
|
||||||
void addLine(char* path, int permissions, int uid, int gid) {
|
void mallocLines() {
|
||||||
linesNo++;
|
|
||||||
|
|
||||||
// add one line to the lines array
|
// add one line to the lines array
|
||||||
if (linesNo == 1) {
|
if (linesNo == 1) {
|
||||||
lines = malloc(sizeof(*lines));
|
lines = malloc(sizeof(*lines));
|
||||||
@ -37,27 +35,9 @@ void addLine(char* path, int permissions, int uid, int gid) {
|
|||||||
exit(4);
|
exit(4);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// calculate line (index) we are at, which is 0-based (thus -1)
|
|
||||||
int idx = linesNo - 1;
|
|
||||||
|
|
||||||
// print user
|
|
||||||
struct passwd* user = getpwuid(uid);
|
|
||||||
lines[idx].username = malloc(strlen(user->pw_name) + 1);
|
|
||||||
strcpy(lines[idx].username, user->pw_name);
|
|
||||||
if (maxUsername < strlen(lines[idx].username)) {
|
|
||||||
maxUsername = strlen(lines[idx].username);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// print group
|
void addPermission2Line(int idx, int permissions) {
|
||||||
struct group* group = getgrgid(gid);
|
|
||||||
lines[idx].groupname = malloc(strlen(group->gr_name) + 1);
|
|
||||||
strcpy(lines[idx].groupname, group->gr_name);
|
|
||||||
if (maxGroupname < strlen(lines[idx].groupname)) {
|
|
||||||
maxGroupname = strlen(lines[idx].groupname);
|
|
||||||
}
|
|
||||||
|
|
||||||
// print permissions
|
|
||||||
strcpy(lines[idx].permissionStr[0], "---");
|
strcpy(lines[idx].permissionStr[0], "---");
|
||||||
strcpy(lines[idx].permissionStr[1], "---");
|
strcpy(lines[idx].permissionStr[1], "---");
|
||||||
strcpy(lines[idx].permissionStr[2], "---");
|
strcpy(lines[idx].permissionStr[2], "---");
|
||||||
@ -88,8 +68,37 @@ void addLine(char* path, int permissions, int uid, int gid) {
|
|||||||
lines[idx].permissionStr[permissionUGO][permissionRWX] = 'x';
|
lines[idx].permissionStr[permissionUGO][permissionRWX] = 'x';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// print current path
|
void addLine(char* path, int permissions, int uid, int gid) {
|
||||||
|
linesNo++;
|
||||||
|
|
||||||
|
// allocate memory for another line
|
||||||
|
mallocLines();
|
||||||
|
|
||||||
|
// calculate line (index) we are at, which is 0-based (thus -1)
|
||||||
|
int idx = linesNo - 1;
|
||||||
|
|
||||||
|
// add user
|
||||||
|
struct passwd* user = getpwuid(uid);
|
||||||
|
lines[idx].username = malloc(strlen(user->pw_name) + 1);
|
||||||
|
strcpy(lines[idx].username, user->pw_name);
|
||||||
|
if (maxUsername < strlen(lines[idx].username)) {
|
||||||
|
maxUsername = strlen(lines[idx].username);
|
||||||
|
}
|
||||||
|
|
||||||
|
// add group
|
||||||
|
struct group* group = getgrgid(gid);
|
||||||
|
lines[idx].groupname = malloc(strlen(group->gr_name) + 1);
|
||||||
|
strcpy(lines[idx].groupname, group->gr_name);
|
||||||
|
if (maxGroupname < strlen(lines[idx].groupname)) {
|
||||||
|
maxGroupname = strlen(lines[idx].groupname);
|
||||||
|
}
|
||||||
|
|
||||||
|
// calculate and add permission
|
||||||
|
addPermission2Line(idx, permissions);
|
||||||
|
|
||||||
|
// add current path
|
||||||
lines[idx].path = malloc(strlen(path) + 1);
|
lines[idx].path = malloc(strlen(path) + 1);
|
||||||
strcpy(lines[idx].path, path);
|
strcpy(lines[idx].path, path);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user