why doesn't this compile?
#include <stdio.h>
#include <stdlib.h>

// check_permissions
int check_permissions(char *req_permissions, char *permissions){
    for(int i = 0; i < 9; i++){
        if((req_permissions[i] != 13) && (permissions[i] != req_permissions[i])){return 0;}
    }
    return 1;
}

// main method
int main(int argc, char** argv){
    if (!(argc == 2 || argc == 3)) {
        fprintf(stderr, "USAGE: count_large size [permissions]\n");
        return 1;
    }
    
    printf("line19\n");

    // initialize program variables
    int max_size = (int)strtol(argv[1], NULL, 10);
    int num_large = 0;
    int num_large_permissions = 0;
    int total;
    int done;

    // initialize req_permissions
    char *req_permissions = NULL;
    if(argv[2] != NULL){
        for (int i = 0; i < 9; i++){
            req_permissions[i] = argv[2][i];
        }
    }

    // discard total data
    done = scanf("%*s %d %*c", &total);
    printf("line38\n");
    printf("done %d", done);

    // iterate over lines
    while (done == 1){
        
        printf("initializing size, permissions);
        int size;
        char *permissions = NULL;
        printf("about to scan");
        done = scanf("%*c %s %*s %*s %*s %d %*s %*s %*s %*s", permissions, &size);
        printf("while loop\n");
        if ((done == 1) && (size > max_size)){
          num_large += 1;
          if((argc == 2) && (check_permissions(req_permissions, permissions) == 0)){
              num_large -= 1;
          }
        } 
      
    }

    printf("%d", num_large);    
    return 0;

}
