trustee: share trustee header path formatting
Move the shared GRANT/REMOVE/REVOKE header path formatting into trustee.c. The Novell trustee tools display the server and volume separator as SERVER/SYS: while keeping the remaining path separators as DOS backslashes. Use one trustee_header_path() helper for that formatting instead of keeping separate local copies in GRANT, REMOVE and REVOKE. No behavior change.
This commit is contained in:
21
grant.c
21
grant.c
@@ -25,6 +25,7 @@
|
||||
|
||||
#include "net.h"
|
||||
#include "ncpapi.h"
|
||||
#include "trustee.h"
|
||||
|
||||
#define GRANT_BINDERY_USER 0x0001
|
||||
#define GRANT_BINDERY_GROUP 0x0002
|
||||
@@ -100,20 +101,6 @@ static void grant_usage_after_error(void)
|
||||
grant_usage_ex(0, 1, 2);
|
||||
}
|
||||
|
||||
static void grant_header_path(char *out, char *path, int max)
|
||||
{
|
||||
char *p;
|
||||
|
||||
tool_header_path(out, path, max);
|
||||
|
||||
/* Novell GRANT displays server and volume as SERVER/SYS: while
|
||||
* RIGHTS uses SERVER\SYS:. Keep the rest of the path with DOS
|
||||
* backslashes. */
|
||||
p = strchr(out, '\\');
|
||||
if (p && strchr(out, ':') && p < strchr(out, ':'))
|
||||
*p = '/';
|
||||
}
|
||||
|
||||
static void grant_rights_bracket(uint16 rights, char *out)
|
||||
{
|
||||
/* Novell displays Supervisor as the full effective right mask. */
|
||||
@@ -420,7 +407,7 @@ int func_grant(int argc, char *argv[], int mode)
|
||||
if (!object_id) {
|
||||
char header[300];
|
||||
|
||||
grant_header_path(header, path, sizeof(header));
|
||||
trustee_header_path(header, path, sizeof(header));
|
||||
fprintf(stdout, "\n%s\n", header);
|
||||
if (objtype == GRANT_BINDERY_GROUP)
|
||||
fprintf(stdout, "\aGroup \"%s\" not found.\n", objname);
|
||||
@@ -437,7 +424,7 @@ int func_grant(int argc, char *argv[], int mode)
|
||||
if (rc) {
|
||||
char header[300];
|
||||
|
||||
grant_header_path(header, path, sizeof(header));
|
||||
trustee_header_path(header, path, sizeof(header));
|
||||
fprintf(stdout, "\n%s\n", header);
|
||||
fprintf(stdout, "Invalid path or no match for pattern specified.\n\n");
|
||||
return(grant_last_rc ? grant_last_rc : 1);
|
||||
@@ -448,7 +435,7 @@ int func_grant(int argc, char *argv[], int mode)
|
||||
char base[80];
|
||||
char bracket[10];
|
||||
|
||||
grant_header_path(header, path, sizeof(header));
|
||||
trustee_header_path(header, path, sizeof(header));
|
||||
tool_basename(base, path, sizeof(base));
|
||||
grant_rights_bracket(rights, bracket);
|
||||
|
||||
|
||||
16
remove.c
16
remove.c
@@ -49,20 +49,6 @@ static void remove_usage_after_error(void)
|
||||
fprintf(stdout, "\n");
|
||||
}
|
||||
|
||||
static void remove_header_path(char *out, char *path, int max)
|
||||
{
|
||||
char *p;
|
||||
|
||||
tool_header_path(out, path, max);
|
||||
|
||||
/* Novell REMOVE displays server and volume as SERVER/SYS: while
|
||||
* RIGHTS uses SERVER\SYS:. Keep the rest of the path with DOS
|
||||
* backslashes. */
|
||||
p = strchr(out, '\\');
|
||||
if (p && strchr(out, ':') && p < strchr(out, ':'))
|
||||
*p = '/';
|
||||
}
|
||||
|
||||
static int remove_one(char *path, uint16 dhandle, uint32 object_id,
|
||||
uint16 objtype, char *objname, int forced_is_file)
|
||||
{
|
||||
@@ -97,7 +83,7 @@ static int remove_one(char *path, uint16 dhandle, uint32 object_id,
|
||||
|
||||
{
|
||||
char header[300];
|
||||
remove_header_path(header, path, sizeof(header));
|
||||
trustee_header_path(header, path, sizeof(header));
|
||||
fprintf(stdout, "%s\n", header);
|
||||
}
|
||||
|
||||
|
||||
16
revoke.c
16
revoke.c
@@ -71,20 +71,6 @@ static void revoke_usage_full(int leading_blank, int bell_before_tail)
|
||||
fprintf(stdout, "* Use abbreviations listed above, separated by spaces.\n");
|
||||
}
|
||||
|
||||
static void revoke_header_path(char *out, char *path, int max)
|
||||
{
|
||||
char *p;
|
||||
|
||||
tool_header_path(out, path, max);
|
||||
|
||||
/* Novell REVOKE displays server and volume as SERVER/SYS: while
|
||||
* RIGHTS uses SERVER\SYS:. Keep the rest of the path with DOS
|
||||
* backslashes. */
|
||||
p = strchr(out, '\\');
|
||||
if (p && strchr(out, ':') && p < strchr(out, ':'))
|
||||
*p = '/';
|
||||
}
|
||||
|
||||
static int revoke_one(char *path, uint16 dhandle, uint32 object_id,
|
||||
uint16 revoke_mask, int forced_is_file)
|
||||
{
|
||||
@@ -140,7 +126,7 @@ static int revoke_one(char *path, uint16 dhandle, uint32 object_id,
|
||||
{
|
||||
char header[300];
|
||||
char bracket[10];
|
||||
revoke_header_path(header, path, sizeof(header));
|
||||
trustee_header_path(header, path, sizeof(header));
|
||||
trustee_rights_bracket(new_rights, bracket);
|
||||
fprintf(stdout, "%s\n", header);
|
||||
fprintf(stdout, "Trustee's access rights set to [%s]\r\n\n", bracket);
|
||||
|
||||
29
trustee.c
29
trustee.c
@@ -31,6 +31,35 @@
|
||||
#define S_IFDIR 0040000
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* trustee_header_path
|
||||
*
|
||||
* Purpose:
|
||||
* Formats the path header used by GRANT, REMOVE and REVOKE.
|
||||
*
|
||||
* Parameters:
|
||||
* out - destination buffer.
|
||||
* path - source path to format.
|
||||
* max - destination buffer size.
|
||||
*
|
||||
* Notes:
|
||||
* Novell trustee tools display the server and volume separator as
|
||||
* SERVER/SYS: while tools such as RIGHTS keep SERVER\SYS:. Keep all
|
||||
* remaining path separators as DOS backslashes.
|
||||
*/
|
||||
void trustee_header_path(char *out, char *path, int max)
|
||||
{
|
||||
char *p;
|
||||
char *colon;
|
||||
|
||||
tool_header_path(out, path, max);
|
||||
|
||||
p = strchr(out, '\\');
|
||||
colon = strchr(out, ':');
|
||||
if (p && colon && p < colon)
|
||||
*p = '/';
|
||||
}
|
||||
/*
|
||||
* trustee_parse_right_word
|
||||
*
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
|
||||
int trustee_parse_right_word(char *s, uint16 *rights);
|
||||
void trustee_rights_bracket(uint16 rights, char *out);
|
||||
void trustee_header_path(char *out, char *path, int max);
|
||||
uint32 trustee_lookup_object(char *name, uint16 *objtype, int objtype_given);
|
||||
int trustee_path_is_dir(char *path);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user