disabled
  *   lY>JC]i@p, Tţ_I|+     /*
 * Copyright © 1999-2010 David Woodhouse <dwmw2@infradead.org>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 */

#ifndef __MTD_NFTL_USER_H__
#define __MTD_NFTL_USER_H__

#include <linux/types.h>

/* Block Control Information */

struct nftl_bci {
	unsigned char ECCSig[6];
	__u8 Status;
	__u8 Status1;
}__attribute__((packed));

/* Unit Control Information */

struct nftl_uci0 {
	__u16 VirtUnitNum;
	__u16 ReplUnitNum;
	__u16 SpareVirtUnitNum;
	__u16 SpareReplUnitNum;
} __attribute__((packed));

struct nftl_uci1 {
	__u32 WearInfo;
	__u16 EraseMark;
	__u16 EraseMark1;
} __attribute__((packed));

struct nftl_uci2 {
        __u16 FoldMark;
        __u16 FoldMark1;
	__u32 unused;
} __attribute__((packed));

union nftl_uci {
	struct nftl_uci0 a;
	struct nftl_uci1 b;
	struct nftl_uci2 c;
};

struct nftl_oob {
	struct nftl_bci b;
	union nftl_uci u;
};

/* NFTL Media Header */

struct NFTLMediaHeader {
	char DataOrgID[6];
	__u16 NumEraseUnits;
	__u16 FirstPhysicalEUN;
	__u32 FormattedSize;
	unsigned char UnitSizeFactor;
} __attribute__((packed));

#define MAX_ERASE_ZONES (8192 - 512)

#define ERASE_MARK 0x3c69
#define SECTOR_FREE 0xff
#define SECTOR_USED 0x55
#define SECTOR_IGNORE 0x11
#define SECTOR_DELETED 0x00

#define FOLD_MARK_IN_PROGRESS 0x5555

#define ZONE_GOOD 0xff
#define ZONE_BAD_ORIGINAL 0
#define ZONE_BAD_MARKED 7


#endif /* __MTD_NFTL_USER_H__ */
  +   lzmJeAqţp_I|     history graph API
=================

The graph API is used to draw a text-based representation of the commit
history.  The API generates the graph in a line-by-line fashion.

Functions
---------

Core functions:

* `graph_init()` creates a new `struct git_graph`

* `graph_update()` moves the graph to a new commit.

* `graph_next_line()` outputs the next line of the graph into a strbuf.  It
  does not add a terminating newline.

* `graph_padding_line()` outputs a line of vertical padding in the graph.  It
  is similar to `graph_next_line()`, but is guaranteed to never print the line
  containing the current commit.  Where `graph_next_line()` would print the
  commit line next, `graph_padding_line()` prints a line that simply extends
  all branch lines downwards one row, leaving their positions unchanged.

* `graph_is_commit_finished()` determines if the graph has output all lines
  necessary for the current commit.  If `graph_update()` is called before all
  lines for the current commit have been printed, the next call to
  `graph_next_line()` will output an ellipsis, to indicate that a portion of
  the graph was omitted.

The following utility functions are wrappers around `graph_next_line()` and
`graph_is_commit_finished()`.  They always print the output to stdout.
They can all be called with a NULL graph argument, in which case no graph
output will be printed.

* `graph_show_commit()` calls `graph_next_line()` and
  `graph_is_commit_finished()` until one of them return non-zero.  This prints
  all graph lines up to, and including, the line containing this commit.
  Output is printed to stdout.  The last line printed does not contain a
  terminating newline.

* `graph_show_oneline()` calls `graph_next_line()` and prints the result to
  stdout.  The line printed does not contain a terminating newline.

* `graph_show_padding()` calls `graph_padding_line()` and prints the result to
 