예제 #1
0
파일: mylogin.c 프로젝트: Ovhagen/EIT060
void write_pw(int entry, int value, struct pwdb_passwd *p)
{
	if (entry == PW_FAILED) {
		p->pw_failed = value;
	} else if (entry == PW_AGE) {
		p->pw_age = value;
	} else {
		printf("Faulty entry passed");
		return;
	}

	switch (entry) {
		case PW_FAILED:
			p->pw_failed = value;
			break;
		case PW_AGE:
			p->pw_age = value;
			break;
		default:
			printf("Erroneous entry passed to write_pw.");
			return;
	}

	if (pwdb_update_user(p) != 0) {
		printf("pwdb_update_user returned error %s\n",
				pwdb_err2str(pwdb_errno));
	}
}
예제 #2
0
int main(int argc,char **argv){

  struct pwdb_passwd *p;

  if (argc<2) { 
    printf("Usage: pwdb_showuser username\n");
    return(0);
  }

  p=pwdb_getpwnam(argv[1]);

  if (p==NULL) {
    printf("pwdb_getpwnam returned error: %s\n",pwdb_err2str(pwdb_errno));
    return(0);
  }
  printf("User info:\n");
  print_info(p);
  
  return(0);
}
예제 #3
0
int main(int argc,char **argv)
{
  char *username;
  char *buf;
  size_t buflen, chread;
  struct pwdb_passwd *p, *oldp;
  int updt;

  if (argc<2) {
    printf("Usage: update_user username\n");
    return(0);
  }

  username=argv[1];
  oldp=pwdb_getpwnam(username);
  if (oldp!=NULL) 
     updt=1;
  else if ((oldp==NULL) && (pwdb_errno==PWDB_NOUSER)) 
          updt=0; 
  else {
    printf("pwdb_getpwnam return error: %s\n",pwdb_err2str(pwdb_errno));
    return(0);
  }

  p=(struct pwdb_passwd *)malloc(sizeof(struct pwdb_passwd));
  buf=NULL;
  buflen=0;


  p->pw_name=username;
 
  chread=0;
  while (1) {
    printf("Password:"******"New user, so you must enter data\n");
    if ((updt) && (chread<1)) {
      p->pw_passwd=oldp->pw_passwd;
      break;
    }
    if (chread>0) {
       p->pw_passwd=(char *)malloc(sizeof(char)*(chread+1));
       strncpy(p->pw_passwd,buf,chread);
       p->pw_passwd[chread]='\0';
       break;
     }  
  }

  chread=0;
  while (1) {
    printf("Uid:");
    chread=getline(&buf,&buflen,stdin); 
    buf[chread]='\0'; chread--; /* remove '\n' included by getline */
    if ((!updt) && (chread<1)) 
       printf("New user, so you must enter data\n");
    if ((updt) && (chread<1)) {
      p->pw_uid=oldp->pw_uid;
      break;
    }
    if (chread>0) {
       p->pw_uid=atoi(buf);
       break;
     }  
  }

  chread=0;
  while (1) {
    printf("Gid:");
    chread=getline(&buf,&buflen,stdin); 
    buf[chread]='\0'; chread--; /* remove '\n' included by getline */
    if ((!updt) && (chread<1)) 
       printf("New user, so you must enter data\n");
    if ((updt) && (chread<1)) {
      p->pw_gid=oldp->pw_gid;
      break;
    }
    if (chread>0) {
       p->pw_gid=atoi(buf);
       break;
     }  
  }

 chread=0;
  while (1) {
    printf("Real name:");
    chread=getline(&buf,&buflen,stdin); 
    buf[chread]='\0'; chread--; /* remove '\n' included by getline */
    if ((!updt) && (chread<1)) 
       printf("New user, so you must enter data\n");
    if ((updt) && (chread<1)) {
      p->pw_gecos=oldp->pw_gecos;
      break;
    }
    if (chread>0) {
       p->pw_gecos=(char *)malloc(sizeof(char)*(chread+1));
       strncpy(p->pw_gecos,buf,chread);
       p->pw_gecos[chread]='\0';
       break;
     }  
  }

  chread=0;
  while (1) {
    printf("Home directory:");
    chread=getline(&buf,&buflen,stdin); 
    buf[chread]='\0'; chread--; /* remove '\n' included by getline */
    if ((!updt) && (chread<1)) 
       printf("New user, so you must enter data\n");
    if ((updt) && (chread<1)) {
      p->pw_dir=oldp->pw_dir;
      break;
    }
    if (chread>0) {
       p->pw_dir=(char *)malloc(sizeof(char)*(chread+1));
       strncpy(p->pw_dir,buf,chread);
       p->pw_dir[chread]='\0';
       break;
     }  
  }

  chread=0;
  while (1) {
    printf("Shell:");
    chread=getline(&buf,&buflen,stdin); 
    buf[chread]='\0'; chread--; /* remove '\n' included by getline */
    if ((!updt) && (chread<1)) 
       printf("New user, so you must enter data\n");
    if ((updt) && (chread<1)) {
      p->pw_shell=oldp->pw_shell;
      break;
    }
    if (chread>0) {
       p->pw_shell=(char *)malloc(sizeof(char)*(chread+1));
       strncpy(p->pw_shell,buf,chread);
       p->pw_shell[chread]='\0';
       break;
     }  
  }

  chread=0;
  while (1) {
    printf("Failed:");
    chread=getline(&buf,&buflen,stdin); 
    buf[chread]='\0'; chread--; /* remove '\n' included by getline */
    if ((!updt) && (chread<1)) 
       printf("New user, so you must enter data\n");
    if ((updt) && (chread<1)) {
      p->pw_failed=oldp->pw_failed;
      break;
    }
    if (chread>0) {
       p->pw_failed=atoi(buf);
       break;
     }  
  }


  chread=0;
  while (1) {
    printf("Age:");
    chread=getline(&buf,&buflen,stdin); 
    buf[chread]='\0'; chread--; /* remove '\n' included by getline */
    if ((!updt) && (chread<1)) 
       printf("New user, so you must enter data\n");
    if ((updt) && (chread<1)) {
      p->pw_age=oldp->pw_age;
      break;
    }
    if (chread>0) {
       p->pw_age=atoi(buf);
       break;
     }
  }


  if (pwdb_update_user(p)!=0) {
      printf("pwdb_update_user returned error %s\n",pwdb_err2str(pwdb_errno));
  }

  return(0);
}