_makenames.c
上传用户:pycemail
上传日期:2007-01-04
资源大小:329k
文件大小:2k
源码类别:

Ftp客户端

开发平台:

Unix_Linux

  1. /*
  2.  * $Id: _makenames.c,v 1.2 1999/09/07 23:14:19 macgyver Exp $
  3.  *
  4.  * Copyright (c) 1997-8 Andrew G. Morgan <morgan@linux.kernel.org>
  5.  *
  6.  * This is a file to make the capability <-> string mappings for
  7.  * libcap.
  8.  */
  9. #include <stdio.h>
  10. #include <stdlib.h>
  11. #include <linux/capability.h>
  12. /*
  13.  * #include 'sed' generated array
  14.  */
  15. struct {
  16.     int index;
  17.     const char *name;
  18. } const list[] = {
  19. #include "cap_names.sed"
  20.     {-1, NULL}
  21. };
  22. /* this should be more than big enough (factor of three at least) */
  23. const char *pointers[8*sizeof(struct __user_cap_data_struct)];
  24. int main(void)
  25. {
  26.     int i, maxcaps=0;
  27.     for ( i=0; list[i].index >= 0 && list[i].name; ++i ) {
  28. if (maxcaps <= list[i].index) {
  29.     maxcaps = list[i].index + 1;
  30. }
  31. pointers[list[i].index] = list[i].name;
  32.     }
  33.     printf("/*n"
  34.    " * DO NOT EDIT: this file is generated automatically fromn"
  35.    " *n"
  36.    " *     <linux/capability.h>n"
  37.    " */n"
  38.    "#define __CAP_BITS   %dn"
  39.    "n"
  40.    "#ifdef LIBCAP_PLEASE_INCLUDE_ARRAYn"
  41.    "  char const *_cap_names[__CAP_BITS] = {n", maxcaps);
  42.     for (i=0; i<maxcaps; ++i) {
  43. if (pointers[i])
  44.     printf("      /* %d */t"%s",n", i, pointers[i]);
  45. else
  46.     printf("      /* %d */tNULL,tt/* - presently unused */n", i);
  47.     }
  48.     printf("  };n"
  49.    "#endif /* LIBCAP_PLEASE_INCLUDE_ARRAY */n"
  50.    "n"
  51.    "/* END OF FILE */n");
  52.     exit(0);
  53. }
  54. /*
  55.  * $Log: _makenames.c,v $
  56.  * Revision 1.2  1999/09/07 23:14:19  macgyver
  57.  * Updated capabilities library and model.
  58.  *
  59.  * Revision 1.3  1999/05/14 04:46:15  morgan
  60.  * another attempt to fix the bug Chris Evans found
  61.  *
  62.  * Revision 1.2  1999/05/14 04:38:06  morgan
  63.  * Fix from Chris Evans: off by one error when computing the name array
  64.  *
  65.  * Revision 1.1.1.1  1999/04/17 22:16:31  morgan
  66.  * release 1.0 of libcap
  67.  *
  68.  * Revision 1.4  1998/06/07 15:50:12  morgan
  69.  * updated to accommodate kernel's real header file :*)
  70.  *
  71.  * Revision 1.3  1998/05/24 22:54:09  morgan
  72.  * updated for 2.1.104
  73.  *
  74.  * Revision 1.2  1997/05/04 05:35:46  morgan
  75.  * cleaned up to #include sed output. also generates whole cap_names.c file
  76.  *
  77.  * Revision 1.1  1997/04/28 00:57:11  morgan
  78.  * Initial revision
  79.  *
  80.  */