zboot/piggyback.c
/*
 *    linux/zBoot/piggyback.c
 *
 *    (C) 1993 Hannu Savolainen
 */
/*
 *    This program reads the compressed system image from stdin and
 *    encapsulates it into an object file written to the stdout.
 */
//这个程序读取压缩的system映像文件从标准输入然后压缩后写入标准输出
#include <stdio.h>
#include <unistd.h>
#include <a.out.h>
//主函数
int main(int argc, char *argv[])
{
    int c, n=0, len=0;
    //定义缓冲区
    char tmp_buf[512*1024];
    
    //可执行文件头
    struct exec obj = {0x00640107};    /* object header */
    //输入的数据和输入的长度
    char string_names[] = {"_input_data\0_input_len\0"};
//标号表,变量名
    struct nlist var_names[2] = /* Symbol table */
        {    
            {    /* _input_data    */
                (char *)4, 7, 0, 0, 0
            },
            {    /* _input_len */
                (char *)16, 7, 0, 0, 0
            }
        };
len = 0;
    //从标准输入中读取数据到缓冲区
    while ((n = read(0, &tmp_buf[len], sizeof(tmp_buf)-len+1)) > 0)
          len += n;
//校验读取的长度
    if (n==-1)
    {
        perror("stdin");
        exit(-1);
    }
if (len >= sizeof(tmp_buf))
    {
        fprintf(stderr, "%s: Input too large\n", argv[0]);
        exit(-1);
    }
//输出长度信息
    fprintf(stderr, "Compressed size %d.\n", len);
/*
 *    Output object header
 */
    //输出对象头
    obj.a_data = len + sizeof(long);
    obj.a_syms = sizeof(var_names);
    write(1, (char *)&obj, sizeof(obj));
/*
 *    Output data segment (compressed system & len)
 */
    //输出数据段
    write(1, tmp_buf, len);
    write(1, (char *)&len, sizeof(len));
/*
 *    Output symbol table
 */
    //输出符号表
    var_names[1].n_value = len;
    write(1, (char *)&var_names, sizeof(var_names));
/*
 *    Output string table
 */
    //输出字符表
    len = sizeof(string_names) + sizeof(len);
    write(1, (char *)&len, sizeof(len));
    write(1, string_names, sizeof(string_names));
exit(0);
}
zboot/piggyback.c的更多相关文章
- zboot/xtract.c
		
/* * linux/zBoot/xtract.c * * Copyright (C) 1993 Hannu Savolainen * * Extracts the system imag ...
 - zBoot/Makefile
		
#上层makefile调用执行make命令,执行的应该是第一个目标allHEAD = head.oSYSTEM = ../tools/zSystem#LD = gcc#TEST = -DTEST_DR ...
 - (寒假集训) Piggyback(最短路)
		
Piggyback 时间限制: 1 Sec 内存限制: 64 MB提交: 3 解决: 3[提交][状态][讨论版] 题目描述 Bessie and her sister Elsie graze i ...
 - WebSocket - ( 一.概述 )
		
说到 WebSocket,不得不提 HTML5,作为近年来Web技术领域最大的改进与变化,包含CSS3.离线与存储.多媒体.连接性( Connectivity )等一系列领域,而即将介绍的 WebSo ...
 - 【DWR系列02】-DWR逆向Ajax即服务器推送
		
.literal { background-color: #f2f2f2; border: 1px solid #cccccc; padding: 1px 3px 0; white-space: no ...
 - USACO翻译:USACO 2014 DEC Silver三题
		
USACO 2014 DEC SILVER 一.题目概览 中文题目名称 回程 马拉松 奶牛慢跑 英文题目名称 piggyback marathon cowjog 可执行文件名 piggyback ma ...
 - TCP协议
		
TCP是一个面向连接的协议,在发送数据之前,必须在双方之间建立一条连接. TCP首部 TCP数据封装在IP数据报中 TCP包首部 下面简单说明部分字段的作用: 端口号:通讯双方由IP地址和端口号标识. ...
 - 反向Ajax,实现服务器向客户端推送消息
		
反向Ajax的基本概念是客户端不必从服务器获取信息,服务器会把相关信息直接推送到客户端.这样做的目的是解决Ajax传统Web模型所带来的一个限制:实时信息很难从技术上解决.原因是,客户端必须联系服务器 ...
 - DWR的Reverse Ajax技术实现
		
DWR的逆向ajax其实主要包括两种模式:主动模式和被动模式.其中主动模式包括Polling和Comet两种,被动模式只有Piggyback这一种. 所谓的Piggyback指的是如果后台有什么内容需 ...
 
随机推荐
- Oracle连接出现TNS:no listener或者ORA-12514: TNS:listener does not currently know
			
1.Message 850 not found; No message file for product=network, facility=NL 提示框:TNS:no listener 解决办法: ...
 - Delphi的TListView控件拖放选定行操作
			
http://www.tansoo.cn/?p=401 Delphi的TListView控件拖放选定行操作的例子,效果图如下:TListView控件拖动选定行到指定位置 具体实现步骤: 一.新建一个D ...
 - HDU 3377 插头dp
			
题目大意: 从左上角走到右下角,每个点之多经过一次,取到所有路径上经过点的权值,求最大的权值之和,这里走到右下角就算停止了 这里有个思路是转化成熟悉的回路问题 在上方和右方最外围定义一圈权值为0 , ...
 - (转载)Htmlparser Filter 简要归纳
			
1 . 逻辑关系:与或非 AndFilter() Creates a new instance of an AndFilter. AndFilter(NodeFilter[] pr ...
 - OpenCV之响应鼠标(三):响应鼠标信息
			
转自:http://blog.csdn.net/haihong84/article/details/6599838 程序代碼如下: #include <cv.h>#include < ...
 - VMware-workstation-full-10.0.3-1895310 CN
			
Name: VMware-workstation-full-10.0.3-1895310.exe发行日期: 2014-07-01内部版本号: 1895310文件大小: 491 MB文件类型: exe ...
 - hibernate缓存和提高效率
			
1.使用二级缓存,多把大批量的.短期多次的查询数据存到二级缓存中,避免和数据库的多次交互,增加负担.二级缓存加在那些增删改少的,查询多的类中.二级缓存的是对象,如果查出来的不是对象,不会放到缓存中去. ...
 - android unique identifier
			
android get device mac address programmatically http://android-developers.blogspot.jp/2011/03/identi ...
 - error C3163: “_vsnprintf”: 属性与以前的声明不一致
			
这是在vs2008中遇到的错误,vs2008以前没有,vs2008以后的vs也没有. c:\program files\microsoft visual studio 9.0\vc\include\s ...
 - C#操作txt问件,进行清空添加操作
			
//把txt清空 FileStream stream = File.Open(Adr,FileMode.OpenOrCreate,FileAccess.Write); stream.Seek(, Se ...