var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-333696-1']); _gaq.push(['_trackPageview']); _gaq.push(['_trackPageLoadTime']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })();
  • 2012年01月14日

    Android Shell(1)

    分类:

    Androidshell解释程序sh主要来自netbsdBourne ShellGNU Bison,作了些修改。

     

    现在我们用Beyond Compare对这些相同版本的源码进行比较以找出修改,比较方法以Androidsh源码(位于..\platform\system\core\sh)为基准。

     

    下面是具体差异:

    arith.carith.h

    来自Bison 版本1.875dparse-gram.hparse-gram.c,有较大改动

     

    arith.y

    194androidsh注释掉了

     

    arith_lex.l

    58androidsh多了 %option noyywrap

     

    builtins.hbuiltins.c

    androidshmkbuiltins生成,并不是新增

     

    builtins.def

    6063androidsh增加了一个宏;行718990androidsh注释掉了

     

    cd.c

    383androidsh增加了一个条件“defined(__linux__)”;行417418androidsh把函数error改成sh_warn,退出返回1

     

    echo.c

    54androidsh注释掉了;行59androidshmain函数改成echocmd

     

    error.c

    62androidsh增加了一个宏“#define signal bsd_signal

     

    error.h

    114androidsh增加了一个条件“defined(__linux__)

     

    eval.c

    48~56androidsh定义宏“__linux__”并移除了头文件“sys/sysctl.h

     

    eval.h

    37androidsh移除了字符指针commandname的常量类型

     

    exec.c

    185200androidsh增加了一个条件“defined(__linux__)

     

    expand.c

    50androidsh移除了头文件“pwd.h”;行188androidsh给字符指针常量赋初始值0;行262androidsh移除了passwd结构指针变量pw的声明;行285~286androidsh移除了在else中对变量pw的处理

     

    input.h

    49androidsh增加函数in_interactive_mode定义

     

    input.c

    67~69androidsh定义宏“WITH_LINENOISE”;行111~113androidshel加了宏“WITH_HISTORY”开关;行178~180androidsh增加函数in_interactive_mode实现;行190androidsh把宏从SMALL改成WITH_HISTORY并修改其判定逻辑;行211~250androidsh增加else分支;行349androidsh把宏从SMALL改成WITH_HISTORY并修改其判定逻辑

     

    init.c

    androidshmkinit生成,并不是新增

     

    jobs.c

    49androidsh定义宏“_PATH_DEVNUL”并移除头文件“paths.h”;行57~59androidsh增加头文件“sys/wait.h”并定义宏“killpg(s,i)”;行86androidsh定义宏“USE_PROCESS_GROUPS”;行213220222229androidsh把前面增加的宏控制代码段;行605androidsh对变量retval初始化;行876879androidsh把代码行放入宏“USE_PROCESS_GROUPS”的开关;行918~926androidsh让宏“USE_PROCESS_GROUPS”开关这些代码段

     

    mail.hmail.c

    androidsh移除了这两个文件

     

    main.c

    5460androidsh分别移除了头文件“locale.h”和“mail.h”,行106~107androidsh移除函数调用setlocale;行243~244androidsh移除函数调用chkmail

     

    memalloc.h

    50

    androidsh修改了函数ckmalloc定义的参数类型

     

    memalloc.c

    40

    androidsh修改了“__RCSID”的第一个参数值;行59androidsh修改了函数ckmalloc实现的参数类型

     

    miscbltin.c

    274~276androidsh移除了else中几乎全部逻辑;行280445androidsh增加宏“#if 1”;行385androidsh强制类型转换变量val

     

    myhistedit.h

    34~48androidsh定义宏“WITH_HISTORY

     

    node.hnode.c

    androidshmknodes.sh生成,并不是新增

     

    options.c

    140androidsh把宏从SMALL改成WITH_HISTORY并修改其判定逻辑

     

    parser.c

    923androidsh对字符常量prevsyntax进行初始化

     

    redir.c

    76androidsh定义宏signal

     

    syntax.c

    6androidsh增加头文件“limits.h

     

    trap.c

    103androidsh增加条件“sys_signame[i] ”;行238androidsh增加两个结构体sigaction变量;行304~312androidsh对新增的这两个结构体变量进行操作;行337367androidsh修改函数为“bsd_signal

     

    var.h

    76~77androidsh移除结构体var变量;行95~96androidsh移除宏“mailval”;行82102androidsh把宏从SMALL改成WITH_HISTORY并修改其判定逻辑

     

    var.c

    45~46androidsh移除头文件“strings.h”;行59~60androidsh移除头文件“mail.h”;行88106123androidsh把宏从SMALL改成WITH_HISTORY并修改其判定逻辑;行92~93androidsh移除结构体var变量;行110~111androidsh删除两行;行297~298androidsh删除“if”条件语句;行,androidsh把函数调用从“strcoll”改成“strcmp

     

    细看请下载我打包的源码合集

    分享到: