Existe uma função C para obter permissões de um arquivo?

Eu estou escrevendo um programa c para ser executado no UNIX e tentando utilizar o comando chmod. Depois de consultar as man pages, eu sei que o chmod precisa de dois parâmetros. primeiro é os bits de permissão, segundo é o arquivo a ser alterado. Eu quero pegar o OR bit a bit dos bits de permissão atuais do arquivo e aqueles inseridos pelo usuário, e alimentar isso para chmod () para alterar as permissões do arquivo.

Eu encontrei oaccess() função, mas estou tendo problemas para descobrir como usá-lo para obter os bits de permissão do arquivo especificado.

O que eu tenho agora é:

octalPermissionString = strtol(argv[1], (char**)NULL, 8);
if(chmod(argv[2], octalPermissionString | (access(argv[2], octalPermissionString)) < 0) {
                    fprintf(stderr, "Permissions of file %s were not changed.\n");
                }

Onde:

argv [1] contém uma cadeia de um número decimal de três dígitos inserido pelo usuário para ser convertido em octal e, em seguida, ser usado como bits de permissão para ser bit a bit ORed,

argv [2] é o arquivo para ter sua permissão alterada, também especificada pelo usuário.

octalPermissionString é um longo para manter a conversão octal de entrada do usuário.

É / Existem outras funções que podem retornar os bits de permissão de um determinado arquivo?

EDIT: faltando parênteses fechar

questionAnswers(2)

yourAnswerToTheQuestion