¿Existe una función C para obtener los permisos de un archivo?

Estoy escribiendo un programa c para ejecutarse en UNIX, e intento utilizar el comando chmod. Después de consultar las páginas del manual, sé que chmod necesita dos parámetros. Primero están los bits de permiso, segundo es el archivo que se va a cambiar. Quiero tomar el bit bit OR de los bits de permiso actuales del archivo y los ingresados ​​por el usuario, y enviarlo a chmod () para cambiar los permisos del archivo.

Encontré laaccess() función, pero estoy teniendo problemas para averiguar cómo usarla para obtener los bits de permiso del archivo especificado.

Lo que tengo ahora es:

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");
                }

dónde:

argv [1] contiene una cadena de un número decimal de tres dígitos ingresado por el usuario que se convertirá a octal y luego se usará como los bits de permiso para ser OR'ed bit a bit,

argv [2] es el archivo para cambiar su permiso, también especificado por el usuario.

octalPermissionString es un largo para mantener la conversión octal de la entrada del usuario.

¿Hay / hay alguna otra función que pueda devolver los bits de permiso de un archivo dado?

EDITAR: falta paréntesis cercanos

Respuestas a la pregunta(2)

Su respuesta a la pregunta