summaryrefslogblamecommitdiffstats
path: root/login-utils/islocal.c
blob: 5480c5744aa7290cd0f837bf5f1e27d29f558fbf (plain) (tree)
1
2
3
4
5
6
7

                                                              

                                                                            
 

                                                         




                                                                  




                   

                      







                              
                
 

                                                                       


                        
                           
                                                
                                                                   







                                  
/* 
   islocal.c - returns true if user is registered in the local
   /etc/passwd file. Written by Alvaro Martinez Echevarria, 
   alvaro@enano.etsit.upm.es, to allow peaceful coexistence with yp. Nov 94.

   Hacked a bit by poe@daimi.aau.dk
   See also ftp://ftp.daimi.aau.dk/pub/linux/poe/admutil*

   Hacked by Peter Breitenlohner, peb@mppmu.mpg.de,
     to distinguish user names where one is a prefix of the other,
     and to use "pathnames.h". Oct 5, 96.   

*/

#include <stdio.h>
#include <string.h>

#include "pathnames.h"

#define MAX_LENGTH	1024

int
is_local(char *user)
{
	FILE *fd;
	char line[MAX_LENGTH];
	int local = 0;
	int len;

        if(!(fd = fopen(_PATH_PASSWD, "r"))) {
                fprintf(stderr,"Can't read %s, exiting.",_PATH_PASSWD);
                exit(1);
        }

	len = strlen(user);
        while(fgets(line, MAX_LENGTH, fd) > 0) {
                if(!strncmp(line, user, len) && line[len] == ':') {
			local = 1;
			break;
                }
	}
	fclose(fd);
	return local;
}