ks_sys.c 文件分析

来源:互联网 发布:mysql not like 编辑:程序博客网 时间:2024/05/17 23:05

        ks_sys.c  用来创建配置文件,主要配置:[HOST]  [ IP] [ DHCP]  [HCLONE] [PPPOE]  [SWITCH]...... 

        把这个文件反复看了几遍,因为要用到里面的几个文件操作函数,试着分析了一下,能力有限,错误难免.

      static char *fconfig  = "/tmp/sysconfig";                         /*  file name   */

       char glvalue[256];                                                            /*  globe var    */

/*

 *    计算行的字符数

 */

static int fgetline(FILE * fwd, char * linebuf)
{
  int data;
  int i;

  i = 0;
  while (((data = fgetc(fwd)) != EOF) && (data != '/n')) { //  读取文件数据判断有效并不是回车
    *(linebuf+i) = data;                /*  给指针赋值.并指向下一个地址. */
    i++;
  }
  *(linebuf+i) = '/0';                     /*  最后补上/0,字符串.          */
  if (data == EOF)                      /*  无值.                                   */
    return EOF;
  return i;                                    /*  得到的行字符数返回.       */
}

/*  this is the entry point for shell program sysconfig  */
int sysconfig(int argc, char argv[3][200], char *supBuf)

/* index the number of item to be skipped, starting from 1 */

static int print_config(FILE *handle, char *category, char* item, int index )
{
 int i, result;

 if ( 0 == (result= find_category(handle, category)))   // 找寻目录[  ]
 {
  /*skip first index items*/
  for ( i=1; i<index; i++)
  {
     result = find_item(handle, item);               // 找寻[ ] 中的一行值.
     if ( 0 != result )
      return (result);
  }
  /*get to the target item */
  if ( 0 == (result = find_item(handle, item)))
                     print_item_value(handle);        // 输出到配置文件
 }
 return (result);
}

/*  文件位置 */

static long find_postion(FILE *handle, char *item, int flag)
{
   int   index;
   long  position;
   char  tmp[3], temp[128], fg;
  
   if ( flag == 0 )
    fg = '/n';   /*by whole item string match*/
   else
    fg = '=';    /*by item number in the list first one is 1 */

   do
   {
     index = 0;
  position = ftell(handle);                // 得到文件位置值.
     do
  {
     if ( 0 != fread(tmp, sizeof(char), 1, handle) )   // 读文件最开始的一个值.
  {
        temp[index++] = tmp[0];  // 读到的第一个值存入temp[]数组中.
     if ( tmp[0] == '[')                    // 最开始值为'['
      return -1L;
  }
     else
     return (-1L);
  }while ( tmp[0] != fg );           // fg 为上面得到的值,由flag参数习决定.
     
  if ( fg == '=')
     temp[index] = '/0';
  else
        temp[index-1] = '/0';
#ifndef WINDOWS
  if (!strcasecmp (item, temp))
#else
     if (!stricmp(item, temp))
#endif
  {
      if ( 0 == fseek(handle, position, SEEK_SET))
     return (position);
   else
     return (-1L);
  }
  else
  {
    if ( fg == '=')
    {
    do
    {
      if ( 0 == fread(tmp, sizeof(char), 1, handle))
       return (-1L);
    }while (tmp[0] != '/n');
    }
    position = ftell(handle);
  }
   } while (tmp[0] != '[');
   return (-1L);
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 红钻叶子黄了怎么办啊 绿钻叶子黄斑点怎么办 金钻的叶子卷怎么办 金钻叶子有黑斑怎么办 怀孕60天没有胎心胎芽怎么办 单位不给交社保怎么办 公司没给足产假怎么办 小公司不给产假怎么办 机关不给陪产假怎么办 刚人流后又怀孕怎么办 怀孕50天不想要怎么办 生了孩子不想要怎么办 刚怀孕不想要孩子怎么办 怀孕一周不想要孩子怎么办 怀孕了不想要孩子怎么办 怀上二胎后悔了怎么办 50岁怀了二胎怎么办 老公那方面太强怎么办 被私人医院骗了怎么办 我特别烦我妈怎么办 刚怀孕了有炎症怎么办 怀孕了但有炎症怎么办 20岁脸上肉松弛怎么办 20岁脸部肉松弛怎么办 脸上肉松弛怎么办16岁 才20岁脸部松弛怎么办 20岁就脸部松弛怎么办 孕妇吃了点薄荷怎么办? 孕妇喝了薄荷水怎么办 怀孕吃了些薄荷怎么办 月经期吃了阿胶怎么办 高血糖怎么办吃什么好 孩子反复发烧4天怎么办 5岁宝宝反复发烧怎么办 6岁儿童反复发烧怎么办 空腹吃核桃胃疼怎么办 空腹吃苹果胃疼怎么办 孕妇吃了灯笼果怎么办 血黏度高怎么办吃啥 3岁宝宝感冒发烧怎么办 买了东西想退货怎么办