I am trying to write a simple C program that creates directories (clone mkdir.). This is what I have so far:
#include <stdlib.h> #include <sys/stat.h> // mkdir #include <stdio.h> // perror mode_t getumask() { mode_t mask = umask(0); umask (mask); return mask; } int main(int argc, const char *argv[]) { mode_t mask = getumask(); printf("%i",mask); if (mkdir("trial",mask) == -1) { perror(argv[0]); exit(EXIT_FAILURE); } return 0; } 
This code creates a directory with d--------- , but I want it to create it using drwxr-xr-x , like mkdir do? What am I doing wrong here?
Edit: This is a working solution for me:
 int main(int argc, const char *argv[]) { if (mkdir("trial",0777) == -1) { perror(argv[0]); exit(EXIT_FAILURE); } return 0; } 
Setting permissions according to umask is automatically processed. Therefore, I only needed to call mkdir with full permissions, and it would be shredded according to the current umask.
yasar  source share