1.一种生成通用的升级文件头部数据信息结构的方法,其特征在于,该方法包含以下步骤 :步骤 1、定义头部配置文件的脚本语言的格式,设计满足该格式的升级文件头部生成解析器 ;
步骤 2、升级文件头部生成解析器一次性提取脚本语言配置文件,逐行读取脚本语言配置文件并索引记录 ;
对于每条脚本语句,升级文件头部生成解析器都会以此给予一个序号,并对应的成为一个记录,该序号作为该语句记录的索引 index ;
步骤 3、进行脚本语言规范性检查 ;
升级文件头部生成解析器根据索引序号依次检测脚本语言的规范性,对于不符合步骤
1 中的定义,会给予警告或者错误提示,升级文件头部生成解析器一旦发现错误则立即退出流程,并为用户提供包含有脚本错误语句所在文件中 line 行数及其错误描述的错误告警信息 ;
步骤 4、升级文件头部生成解析器对脚本语言中的所需数据进行地址的分配 ;
步骤 5、当所有记录根据步骤 4被逐条写入到头部缓存 buffer 中之后,升级文件头部生成解析器将该头部缓存 buffer 一次性写入到被升级文件生成的输出文件中的头部,再从 end 类型的脚本语句的偏移地址 offset 定义的地址处开始,写入输入的原始的被升级文件。
2.如权利要求 1 所述的生成通用的升级文件头部数据信息结构的方法,其特征在于,所述的脚本语句格式为 :offset:type:param,偏移量 : 类型 : 参数,即语句由三个段组成,每个段之间有分隔符,采用“:”冒号分隔,一条语句用于描述一个头部添加单元,其中 :type 表示头部添加单元的数据信息类型 ;
offset 表示头部添加单元的偏移地址 ;
param 表示头部添加单元的参数。
3.如权利要求 2 所述的生成通用的升级文件头部数据信息结构的方法,其特征在于,所述的数据信息类型 type 分为三类 :数据信息类型 string ;
结束标志类型 end ;
其它特定的头部添加单元的数据信息类型。
4.如权利要求 3 所述的生成通用的升级文件头部数据信息结构的方法,其特征在于,所述的其它特定的头部添加单元的数据信息类型包含 :数据信息类型 md5 ;
数据信息类型 time ;
数据信息类型 size ;
其它无需用户自己输入的 param 参数信息的数据信息类型。
5.如权利要求 4 所述的生成通用的升级文件头部数据信息结构的方法,其特征在于,所述的脚本语言的升级文件头部生成解析器还有如下规范 :(1)未被指定的头部数据结构中的数据自动以零来填充 ;
(2)每个数据信息类型的 offset 偏移量必须是线性增加的,即上一条语句的数据信息类型的偏移量必须小于下一条的数据信息类型的偏移量,并且上一条的数据信息类型的偏移量加上该类型的数据大小不应该大于下一条数据信息类型的偏移量,否则会发生数据重叠 ;
(3)对于数据信息类型 string 的数据大小由其 param 参数的实际的字节大小来决定,其它的数据信息类型的数据大小则由该类型本身来决定,对于那些需要由参数来指定的数据大小,则由实际指定的大小来确定 ;
(4)每个脚本语言配置文件中必须至少有唯一一条 end 类型的脚本语句,来定义生成的头部的总大小,end 类型应该仅出现在所有其它脚本语句之后,end 类型之后的其它所有脚本语句都会被自动忽略,或者给用户提示一定的警告或者错误信息 ;
(5)无需用户自己输入的 param 参数信息的数据信息类型,如果用户输入了参数,则自动忽略,并给予一定的告警信息。
6.如权利要求 1 所述的生成通用的升级文件头部数据信息结构的方法,其特征在于,所述的索引记录中包含如下信息 :该条语句所在文件中的实际行数 line,对应于头部开始处的偏移地址 offset,数据类型 type,数据参数长度 desp len,数据参数字符串 desp string,以及一个隐藏的数据参数描述。
7.如权利要求 6 所述的生成通用的升级文件头部数据信息结构的方法,其特征在于,所述的步骤 4 包含以下步骤 :步骤 4.1、建立一个头部缓存 buffer,该头部缓存 buffer 的头部总大小由 end 语句的偏移量 offset 定义,该头部缓存的默认值全部为 0 ;
步骤 4.2、按照索引序号逐条对索引记录进行操作,将索引记录中的参数数据保存到头部缓存中的指定地址 ;
如果数据类型 type 为 string 类型,直接将 string 类型的字符串参数填充到头部缓存中指定的地址中 ;
如果数据类型 type 为其他类型,则根据不同类型的规范,将其对应的数据提取出来,保存到索引记录中的隐藏的数据参数描述中,并将该隐藏的数据参数描述填充到头部缓存中的偏移地址 offset 处。
8.如权利要求 7 所述的生成通用的升级文件头部数据信息结构的方法,其特征在于,如果是MD5类型的数据信息,则需要从输入的被升级文件中提取MD5校验码,并被保存到该记录中的隐藏的数据参数描述中。