pg_id.c
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:1k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. /*-------------------------------------------------------------------------
  2.  *
  3.  * pg_id.c
  4.  *   Print the user ID for the login name passed as argument,
  5.  *   or the real user ID of the caller if no argument.  If the
  6.  *   login name doesn't exist, print "NOUSER" and exit 1.
  7.  *
  8.  * Copyright (c) 1994, Regents of the University of California
  9.  *
  10.  *
  11.  * IDENTIFICATION
  12.  *   $Header: /usr/local/cvsroot/pgsql/src/bin/pg_id/pg_id.c,v 1.8 1999/02/13 23:20:29 momjian Exp $
  13.  *
  14.  *-------------------------------------------------------------------------
  15.  */
  16. #include <sys/types.h>
  17. #include <pwd.h>
  18. #include <stdio.h>
  19. #include <stdlib.h>
  20. #include <unistd.h>
  21. #ifdef __CYGWIN32__
  22. #include <getopt.h>
  23. #endif
  24. int
  25. main(int argc, char **argv)
  26. {
  27. struct passwd *pw;
  28. int ch;
  29. extern int optind;
  30. while ((ch = getopt(argc, argv, "")) != EOF)
  31. switch (ch)
  32. {
  33. case '?':
  34. default:
  35. fprintf(stderr, "usage: pg_id [login]n");
  36. exit(1);
  37. }
  38. argc -= optind;
  39. argv += optind;
  40. if (argc > 0)
  41. {
  42. if (argc > 1)
  43. {
  44. fprintf(stderr, "usage: pg_id [login]n");
  45. exit(1);
  46. }
  47. if ((pw = getpwnam(argv[0])) == NULL)
  48. {
  49. printf("NOUSERn");
  50. exit(1);
  51. }
  52. printf("%ldn", (long) pw->pw_uid);
  53. }
  54. else
  55. printf("%ldn", (long) getuid());
  56. exit(0);
  57. }