X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Futilities%2Fpermissions.c;h=3f679c150e21968370c2b2d283fcdfb7145f4131;hb=0f1911029f2af1c9a8994ab5e6adffb3445a9af0;hp=a52cd198aa2c8aa15d8698806f677124d38c696e;hpb=0df9cdd3df66caf4353128feff3008289cda8115;p=pspp diff --git a/src/language/utilities/permissions.c b/src/language/utilities/permissions.c index a52cd198aa..3f679c150e 100644 --- a/src/language/utilities/permissions.c +++ b/src/language/utilities/permissions.c @@ -43,19 +43,19 @@ int change_permissions(const char *file_name, enum PER per); int cmd_permissions (struct lexer *lexer, struct dataset *ds UNUSED) { - char *fn = 0; - + char *fn = NULL; + const char *str = NULL; lex_match (lexer, T_SLASH); if (lex_match_id (lexer, "FILE")) lex_match (lexer, T_EQUALS); - if (!lex_force_string (lexer)) - return CMD_FAILURE; - - fn = ss_xstrdup (lex_tokss (lexer)); - lex_force_match (lexer, T_STRING); + str = lex_tokcstr (lexer); + if (str) + fn = strdup (str); + if (!lex_force_match (lexer, T_STRING) || str == NULL) + goto error; lex_match (lexer, T_SLASH); @@ -66,12 +66,12 @@ cmd_permissions (struct lexer *lexer, struct dataset *ds UNUSED) if ( lex_match_id (lexer, "READONLY")) { - if ( ! change_permissions(fn, PER_RO ) ) + if (! change_permissions (fn, PER_RO)) goto error; } - else if ( lex_match_id (lexer, "WRITEABLE")) + else if (lex_match_id (lexer, "WRITEABLE")) { - if ( ! change_permissions(fn, PER_RW ) ) + if (! change_permissions (fn, PER_RW )) goto error; } else @@ -80,7 +80,7 @@ cmd_permissions (struct lexer *lexer, struct dataset *ds UNUSED) goto error; } - free(fn); + free (fn); return CMD_SUCCESS; @@ -106,7 +106,6 @@ change_permissions (const char *file_name, enum PER per) return 0; } - locale_file_name = utf8_to_filename (file_name); if ( -1 == stat(locale_file_name, &buf) ) {