无忧启动论坛

标题: INIFILE for GRUB4DOS [打印本页]

作者: chenall    时间: 2011-1-19 01:25
标题: INIFILE for GRUB4DOS
尝试着写了一个INIFILE。。

目前只是最初的版本,,功能非常的少。。目前只有50行的代码,所以暂时别指望有什么高级功能了。。

例子:
1、显示aa.ini [test]段 test的值
inifile /aa.ini [test] test

2、显示aa.ini [test]段全部的内容
inifile /aa.ini [test]

BUG是在所难免的,嘻嘻,下班之前临时兴起就写了一下。

可以先用一下,如果是标准的INI格式文件应该是没有什么问题,复杂的就不太清楚的。

目前还没有考虑注释,即注释也会被显示出来。。

2011-01-19的更新介绍在这里。。
http://bbs.wuyou.net/attachment.php?aid=111643

[ 本帖最后由 chenall 于 2011-1-20 15:06 编辑 ]

INIFILE-2011-01-20.zip

890 Bytes, 下载次数: 87, 下载积分: 无忧币 -2


作者: zhaohj    时间: 2011-1-19 07:40
一直希望解决的问题啊,先测试再说。

不知有没区分大小写?
--------------------------
不错,目前不分大小写。

[ 本帖最后由 zhaohj 于 2011-1-19 08:22 编辑 ]

Snap1.jpg (86.83 KB, 下载次数: 110)

Snap1.jpg

作者: renchmin    时间: 2011-1-19 09:37
楼主继续努力啊,不错的啊。
作者: pseudo    时间: 2011-1-19 12:37
限制体积,例如60k吗?
作者: zhaohj    时间: 2011-1-19 12:47
我测试了一下,>60kb没问题。
估计<1M都没问题,还是听权威的吧。
作者: chenall    时间: 2011-1-19 13:33
没有任何限制。。
不过如果文件比较大的话处理会比较慢。因为是直接把所有文件内容都读入内存再进行处理了。。

嗯,这几天把它完善一下,希望SRS_F6模块可以更方便。。嘿嘿

可能会加入修改的功能(会比较麻烦一些,因为GRUB4DOS目前不支持修改文件大小,所以只好想其它办法了)

[ 本帖最后由 chenall 于 2011-1-19 13:36 编辑 ]
作者: zhaohj    时间: 2011-1-19 14:31
嘿嘿,等待......
新年的礼物!
作者: butyes    时间: 2011-1-19 14:36
chenall大师又有新作品了,哈哈,以后的F6是否都要加速了?
作者: Plantsoot    时间: 2011-1-19 14:59
呵呵,一直对写GRUB4DOS的外部命令有兴趣,就是不知道如何下手。
作者: chenall    时间: 2011-1-19 15:06
原帖由 Plantsoot 于 2011-1-19 14:59 发表
呵呵,一直对写GRUB4DOS的外部命令有兴趣,就是不知道如何下手。


呵呵,写GRUB4DOS外部命令, 除了必须在LINUX以下用GCC编译以外,其实是非常简单的。。。

只是不能使用C语言的函数库,需要的函数只能用GRUB4DOS自带的或自己编写。

只要懂得一点C语言,自己去试着编译一个就很清楚了。
作者: Plantsoot    时间: 2011-1-19 15:32
标题: 回复 #10 chenall 的帖子
多谢C大指导,我把我的小黑装LINUX,也学着写写,到时候可能还要麻烦C大指导。
作者: chenall    时间: 2011-1-19 15:41
原帖由 Plantsoot 于 2011-1-19 15:32 发表
多谢C大指导,我把我的小黑装LINUX,也学着写写,到时候可能还要麻烦C大指导。


欢迎加入,嘿嘿。。



新的INIFILE已经上传。。

支持修改
例子:会把abcd的值设为def
inifile /aa.ini [test] abcd=def

注:这个修改功能有以下限制。。

1.修改的内容不能太长(不过超过原来一行的总长度)多的会被截断。
2.文件太小了也不能改(NTFS格式的)
3.修改的时候会先对原来的空格进行压缩,尽量保证修改成功。

其它改进。
1.支持带空格的section
2.一些优化调整。
3.支持过滤注释内容。

嗯,算是完成了,没有写帮助。。懒啊。

可以开始进行最终的测试了。希望没有什么问题才好。

[ 本帖最后由 chenall 于 2011-1-19 15:43 编辑 ]
作者: zhaohj    时间: 2011-1-19 16:19
把名字也改了?一下大到22KB,呵呵。
原来名字不是挺好的吗?!

--------------------

传错了吧,出来是wenv界面

[ 本帖最后由 zhaohj 于 2011-1-19 16:26 编辑 ]
作者: chenall    时间: 2011-1-19 16:37
汗啊,传错了,已重传。。
作者: zhaohj    时间: 2011-1-19 17:05
能否加一个参数 /remove
如 inifile /remove file [disks]
将清空[disks]段落的内容(填空)
作者: chenall    时间: 2011-1-19 17:35
原帖由 zhaohj 于 2011-1-19 17:05 发表
能否加一个参数 /remove
如 inifile /remove file [disks]
将清空[disks]段落的内容(填空)


如果简单处理,只需要把[disks]修改掉就可以了...
比如改成[;disks]

这样比较快速。
作者: chenall    时间: 2011-1-19 17:51
加一个/remove参数

删除某个段,并没有真正的删除。。。只是让这个段失效而已。。

INIFILE-2011-01-19.zip

858 Bytes, 下载次数: 23, 下载积分: 无忧币 -2


作者: zhaohj    时间: 2011-1-19 20:33
C大,/clear 比/remove更实用。
建议不要注释掉段落名,最好注释掉内容,相当于/clear
如:
[hardwareids.scsi.symmpi]
id="PCI\VEN_1000&DEV_0030","SYMMPI"
id="PCI\VEN_1000&DEV_0032","SYMMPI"
=====INIFILE file [hardwareids.scsi.symmpi] /clear =====>
[hardwareids.scsi.symmpi]
;d="PCI\VEN_1000&DEV_0030","SYMMPI"
;d="PCI\VEN_1000&DEV_0032","SYMMPI"
作者: zhaohj    时间: 2011-1-19 20:35
见鬼,最近无忧怎么啦,老断网...
作者: chenall    时间: 2011-1-19 23:06
因为这样处理起来比较麻烦。。如果要注释掉内容,还不如直接删除更快速。。

目前的处理方式是最快速的,只改写文件的两个字节。

如果要弄成其它方式要改写的内容比较多,若非必要的话还是尽量不要改写原文件的内容

这样可以避免出错。

对了,准备把
以下的输出改变一下,只输出它的值,不输出=之前的内容。

inifile /file.ini [section] item

这样也可以方便直接设置变量。

不知这样输出对其它方面有没有什么影响?如果没有的话就改成这样子处理起来也比较方便。

[ 本帖最后由 chenall 于 2011-1-19 23:09 编辑 ]
作者: zhaohj    时间: 2011-1-20 08:26
“不输出=之前的内容”这个好。
不过现在如果直接在原文件中改写,还是有点不大方便,如下面
[hardwareids.scsi.symmpi]
id="PCI\VEN_1000&DEV_0030","SYMMPI"
id="PCI\VEN_1000&DEV_0032","SYMMPI"
id="PCI\VEN_1000&DEV_0060","SYMMPI"
直接在原文件中想改成
[hardwareids.scsi.symmpi]
id="PCI\VEN_1000&DEV_0032","SYMMPI"
-----------------------------
算了,已经很好了,还是另建个文件通过inifile输出再导入方便。
作者: chenall    时间: 2011-1-21 17:31
再更新了一下,传到grubutils.googlecode.com上面了

更好的支持注释符号";"

支持无section的情况

比如文件内容
aa=bb
cc=dd

可以使用inifile file []
来获得这些内容。
作者: tigerstar    时间: 2011-3-1 10:39
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3