c функция, которая изменяет разрешение файла - PullRequest
2 голосов
/ 26 февраля 2020

, поэтому я пытаюсь создать функцию c, которая использует chmod для изменения прав доступа к файлу, и пользователь должен иметь возможность ввести имя файла, а также разрешения (777), после чего строка будет выглядеть примерно так: «файл chmod 777». текст". Есть ли способ сделать это без необходимости указывать для каждого разрешения?

функция RemoveChar просто удаляет "chmod" из строки

void changeMod(char* ptrString)
{
    RemoveChar(ptrString, 6, 0);
    char *token = strtok(ptrString, " ");
    char *file = strtok(NULL, " ");
    mode_t owner, group, others;
    for(int i = 0; i < 3; i++)
    {
        for (int permission = 0; permission < 8; permission++)
        {
            if(token[i] == ((char)permission))
            {
                if(i == 0)
                {
                    owner = (permission * 100);
                }
                else if(i == 1)
                    group = (permission * 100);
                else
                {
                    others = (permission * 100);
                }
            }       
        }
    }
    chmod(file, owner|group|others);
}

это, очевидно, не работает, но что-то вроде что

1 Ответ

4 голосов
/ 26 февраля 2020

Функция библиотеки, которую вы ищете: strtoul. Обратите внимание на аргумент base, который можно использовать для направления его на анализ чисел в восьмеричном виде.

...