projects
/
pspp
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
render: Add comment.
[pspp]
/
src
/
language
/
utilities
/
permissions.c
diff --git
a/src/language/utilities/permissions.c
b/src/language/utilities/permissions.c
index 904ba95b270e2a7de6c5a22e729f64b8b3247cf1..771eb72832dd1de27304976879eb931cb29350e5 100644
(file)
--- a/
src/language/utilities/permissions.c
+++ b/
src/language/utilities/permissions.c
@@
-51,31
+51,32
@@
cmd_permissions (struct lexer *lexer, struct dataset *ds UNUSED)
lex_match (lexer, T_EQUALS);
str = lex_tokcstr (lexer);
lex_match (lexer, T_EQUALS);
str = lex_tokcstr (lexer);
- fn = strdup (str);
+ if (str)
+ fn = strdup (str);
- if (!lex_force_match (lexer, T_STRING))
+ if (!lex_force_match (lexer, T_STRING)
|| str == NULL
)
goto error;
lex_match (lexer, T_SLASH);
goto error;
lex_match (lexer, T_SLASH);
- if (
! lex_match_id (lexer, "PERMISSIONS"))
+ if (! lex_match_id (lexer, "PERMISSIONS"))
goto error;
lex_match (lexer, T_EQUALS);
goto error;
lex_match (lexer, T_EQUALS);
- if (
lex_match_id (lexer, "READONLY"))
+ if (lex_match_id (lexer, "READONLY"))
{
if (! change_permissions (fn, PER_RO))
goto error;
}
else if (lex_match_id (lexer, "WRITEABLE"))
{
{
if (! change_permissions (fn, PER_RO))
goto error;
}
else if (lex_match_id (lexer, "WRITEABLE"))
{
- if (! change_permissions (fn, PER_RW
))
+ if (! change_permissions (fn, PER_RW))
goto error;
}
else
{
goto error;
}
else
{
- lex_error_expecting (lexer, "WRITEABLE", "READONLY"
, NULL_SENTINEL
);
+ lex_error_expecting (lexer, "WRITEABLE", "READONLY");
goto error;
}
goto error;
}
@@
-106,7
+107,7
@@
change_permissions (const char *file_name, enum PER per)
}
locale_file_name = utf8_to_filename (file_name);
}
locale_file_name = utf8_to_filename (file_name);
- if (
-1 == stat(locale_file_name, &buf)
)
+ if (
-1 == stat(locale_file_name, &buf)
)
{
const int errnum = errno;
msg (SE, _("Cannot stat %s: %s"), file_name, strerror(errnum));
{
const int errnum = errno;
msg (SE, _("Cannot stat %s: %s"), file_name, strerror(errnum));
@@
-114,12
+115,12
@@
change_permissions (const char *file_name, enum PER per)
return 0;
}
return 0;
}
- if (
per == PER_RW
)
+ if (
per == PER_RW
)
mode = buf.st_mode | 0200;
else
mode = buf.st_mode & ~0222;
mode = buf.st_mode | 0200;
else
mode = buf.st_mode & ~0222;
- if (
-1 == chmod(locale_file_name, mode))
+ if (-1 == chmod(locale_file_name, mode))
{
const int errnum = errno;
{
const int errnum = errno;