Question: I am using "ExuberantCtags" also known as "ctags -e", also known as just "etags"

and I am trying to understand the TAGS file format which is generated by the etags command, in particular I want to understand line #2 of the TAGS file.

[Wikipedia says](http://en.wikipedia.org/wiki/Ctags#Etags_2) that line #2 is described like this:

```
{src_file},{size_of_tag_definition_data_in_bytes}

```

In practical terms though TAGS file line:2 for "foo.c" looks like this

```
foo.c,1683

```

My quandary is how exactly does it find this number: 1683 

I know it is the size of the "tag\_definition" so what I want to know is what is
the "tag\_definition"?

I have tried looking through the [ctags source code](http://ctags.sourceforge.net/), but perhaps someone better at C than me will have more success figuring this out.

Thanks!

EDIT #2: 

```
^L^J
hello.c,79^J
float foo (float x) {^?foo^A3,20^J
float bar () {^?bar^A7,59^J
int main() {^?main^A11,91^J

```

Alright, so if I understand correctly, "79" refers to the number of bytes in the TAGS file from after 79 down to and including "91^J".

Makes perfect sense.

Now the numbers 20, 59, 91 in this example wikipedia says refer to the {byte\_offset}

What is the {byte\_offset} offset from?

Thanks for all the help Ken!

Answer: 
You can probably use [mcrypt](http://de3.php.net/manual/en/ref.mcrypt.php).

But may I ask why you're encrypting with ECB mode at all? Remember the [known problems](http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Electronic_codebook_.28ECB.29) with that?
```
mcrypt_decrypt('rijndael-128', $key, $data, 'ecb');

```

You will have to manually remove [the padding](http://en.wikipedia.org/wiki/Padding_%28cryptography%29#Byte_padding).