/*
 * Usage: 
 * mkpasswd [-c] [count]
 * -c : generate also crypted passwd
 */

#include <stdio.h>
#include <time.h>
#include <unistd.h>

// ʸϥѥɤǻѤʸ
// ü饿ԥ󥰤ˤʸȽ̤ˤʸʤɡ
// ŬѹƻȤȤ򤪴ᤷޤ
char* s = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/=+-_!@#$%^*()";

main(int argc, char** argv)
{
  int strsiz;
  int i, j, k, l;
  time_t t;
  int count = 1;
  int gen_crypt = 0;
  int idx = 1;
  
  if (argc >= 2)
  {
    if (!strcmp(argv[1], "-c"))
    {
      gen_crypt = 1;
      idx ++;
      argc --;
    }
  }
  if (argc >= 2)
  {
    count = atoi(argv[idx]);
  }  
  strsiz = strlen (s);
  time(&t);
  i = (int)t;
  srandom (i);

  for (l = 0; l < count; l++)
  {
    char pwd[9];
    for (j = 0; j < 8; j++)
    {
      k = random () % strsiz;
      pwd[j] = s[k];
    }
    pwd[j] = '\0';
    printf (pwd);
    if (gen_crypt)
    {
      char salt[9];
      for (j = 0; j < 8; j++)
      {
        k = random () % strsiz;
        salt[j] = s[k];
      }
      salt[j] = '\0';
      printf("\t%s", crypt (pwd, salt));
    }
    printf("\n");
  }
}
