无忧启动论坛

 找回密码
 注册
搜索
WEPE笔记本电脑手机维修小包 IT发烧友的必备工具最纯净的「微PE装机优盘」UEPON大师作品卡瑞飞系统和装机二合一超级U盘
无忧启动论坛唯一网址:bbs.wuyou.net系统gho:最纯净好用系统下载站广告联系 QQ:184822951 微信:wuyouceo
楼主: zhaohj

GRUB4DOS更新建议、bug反馈专帖

    [复制链接]
发表于 2010-11-6 23:26:54 | 显示全部楼层
原帖由 zhaohj 于 2010-11-6 23:16 发表
这个问题的发现,主要是locate=[ 时,象F6的txtsetup.oem有太多的[,导致变量值超过512。

我上传这个txtsetup.oem,比较大。


这个也有办法解决,就是分块查找,不过批处理会比较复杂
或者将 locate=[ 的查找结果输出到临时文件,再对文件进行判断

[ 本帖最后由 tuxw 于 2010-11-6 23:28 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2010-11-6 23:31:39 | 显示全部楼层
#20楼还是有问题,你再测试一下,我的理解,应该do (...)
应该每个循环执行()中的命令
回复

使用道具 举报

发表于 2010-11-6 23:38:28 | 显示全部楼层
原帖由 zhaohj 于 2010-11-6 20:14 发表
我也测试是这样,批处理中无法使用wenv check
本来想用wenv for /f "delims= " %i in ("STRING”) do set s=%i 来获取16进制的第一个数值
发觉“ ”空格分隔符不起作用了。
----------
要用到新版的>>,看来 ...



看了一下这个是WENV的BUG。
看下面的代码,等tuxw的修正版吧。

    for(i=0;i<7 && *arg;i++)
    {
     if (*arg == '\"' || *arg == ' ')
      break;
     delims = *arg++;
    }

简单一点处理只要再加一个判断就好了。
    if (*arg == '\"' || (*arg == ' ' && arg[1] != '\"'))

这样对语法要求比较严格,不能有多余的空格,当然正常情下这样处理就足够了,没有必要去作那么多的判断。
事实上许多GRUB4DOS的命令对语法要求都是比较严格的,可以节约一些代码空间。
回复

使用道具 举报

发表于 2010-11-6 23:44:03 | 显示全部楼层
原帖由 zhaohj 于 2010-11-6 23:31 发表
#20楼还是有问题,你再测试一下,我的理解,应该do (...)
应该每个循环执行()中的命令


do 后面的 () 不是必须的,只是大多数时候后面不是一条简单的命令,所以要用集合命令,单命令时有无 () 没有关系

只要执行一个  WENV 命令看是否正常就行了
文件重定向不是在循环的时候一行行写入 temp 的,而是等前面的 WENV 命令执行完毕,然后将它的输出写入 temp
下面的输出已经过滤掉注释了

Test-2010-11-06-23-41-21.png

[ 本帖最后由 tuxw 于 2010-11-6 23:53 编辑 ]
回复

使用道具 举报

发表于 2010-11-6 23:46:33 | 显示全部楼层
原帖由 chenall 于 2010-11-6 23:38 发表



看了一下这个是WENV的BUG。
看下面的代码,等tuxw的修正版吧。

    for(i=0;i

好,我重编译下

==================
已上传

[ 本帖最后由 tuxw 于 2010-11-6 23:58 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2010-11-7 00:12:23 | 显示全部楼层
新版grldr测试版,发觉cat命令的bug
Snap1.jpg
回复

使用道具 举报

发表于 2010-11-7 00:21:22 | 显示全部楼层
额,,又没有完全清除前一句的error信息了。
回复

使用道具 举报

发表于 2010-11-7 08:48:21 | 显示全部楼层
GETSECT.rar (820 Bytes, 下载次数: 104)
回复

使用道具 举报

 楼主| 发表于 2010-11-7 10:38:10 | 显示全部楼层
呵呵,我也正在考虑这个问题呢!要么在cat中加参数--length=1024,控制搜索范围,要么放在文件中。
---------------
变量溢出的问题,我认为WENV应该自动截断比较好。

缓冲区地址,默认改成0x65000
WENV calc _ini_tmp=_ini_s1+${_ini_sc,?}+2

[ 本帖最后由 zhaohj 于 2010-11-7 10:52 编辑 ]
回复

使用道具 举报

发表于 2010-11-7 10:52:11 | 显示全部楼层
自动截断不太好
可能你设置了一个超出长度的变量,但你没有注意到,自动截断后将这个问题掩盖了,而这个问题可能在很远的位置才表现出来,故障定位会比较麻烦

或者用一个变通的方式:设置一个开关,变量可能超长,但用户明确知道只需要截断的部分时,先打开这个开关

[ 本帖最后由 tuxw 于 2010-11-7 10:53 编辑 ]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2019-9-21 14:56

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表