Today I had to reinstall windows on a computer (sigh). On the same hard disk there were a Debian and a Gentoo installation too. Of course, reinstalling windows wiped away the grub boot loader (the root of grub is in the Debian installation).
So, in order to restore grub, I started with a Netinst Debian disk and typed rescue at the boot prompt.
This led me to a shell in the root directory of my Debian installation. I then cd to the directory /boot/grub, and entered grub with the command
grub --batch
without the --batch option I got an error complaining about a non supported terminal (bterm).
at the grub prompt I checked that the root directory was actually in /dev/hdb8:
find /boot/grub/stage1
and got the expected answer (hd0,7) (remember that disks and partitions in grub start from 0 and not from 1).
So I set the root for grub
root (hd0,7)
and installed grub on hd0
setup (hd0)
quit grub and reboot... argh... bad surprise: after the message saying that grub was loading, the screen went blank and couldn't load any operating system :-(
I then booted again with the Debian netinst floppy disk. This time I tried to create a grub disk: I cd into /boot/grub and:
dd if=stage1 of=/dev/fd0 bs=512 count=1
dd if=stage2 of=/dev/fd0 bs=512 seek=1
then booted with this disk. I then got a grub prompt, and tried to reinstall grub from there (using the same steps above).
It worked!!! :-)
This time my grub menu was back and can boot all the operating systems I have.
Talking about Programming, Computers, and Computer Science stuff in general.
Wednesday, March 28, 2007
Tuesday, March 27, 2007
Dealing with Flex generated scanner memory
I've been using Flex, a tool for generating scanners (tokenizers), for a while now, and I never worried about memory management of the C scanners it generates: I thought memory would be handled automatically, i.e., freed when the scanner finished its execution.
Actually, this is not the case: you have to deal with it yourself! If you don't you will end up with a memory leak of about 16k (see also the manual); you can use valgrind to check this.
Basically, all you have to do is to call yy_delete_buffer when the scanning is over. For instance, when you reach the end of file. Here's what I do in my flex scanners:
Unfortunately, you'll still experience a memory leak of about 4 bytes, and this looks like a bug. Hope it will be fixed soon...
Actually, this is not the case: you have to deal with it yourself! If you don't you will end up with a memory leak of about 16k (see also the manual); you can use valgrind to check this.
Basically, all you have to do is to call yy_delete_buffer when the scanning is over. For instance, when you reach the end of file. Here's what I do in my flex scanners:
<<EOF>> { |
Unfortunately, you'll still experience a memory leak of about 4 bytes, and this looks like a bug. Hope it will be fixed soon...
Friday, March 23, 2007
GNU Source-highlight 2.6
I've recently released the new version of GNU Source-highlight, http://www.gnu.org/software/src-highlite, which, given a source file, produces a document with syntax highlighting.
The main novelties are:
This is the entire file (~400k) with all these examples.
Lots and lots of colors! :-)
The main novelties are:
- I've added language definitions for Makefiles, m4 and CSS.
- In style files you can specify a color in double quotes meaning that that colro will be inserted in the output without any translation
- In style files you can specify the formatting options for more than one element on the same line, by separating the elements with commas, e.g.,
time, file darkblue b ;
- In the style file you can also specify the background color for each element (not all the output formats support background colors; e.g., XHTML and LaTeX with colors support it, but plain HTML does not).
todo black bg:cyan b;
This formats todo elements in black with a cyan background - The background color for the entire output document can be specified in the style file
bgcolor "white";
- Furthermore, the main novelty, is that you can use a CSS file as a style file so that source-highlight will use its formatting specification to produce the output (independently from HTML); thus, instead of using
--style-file=mystyle.style
you can use--style-css-file=mystyle.css
So that the same CSS file can be used either as a standard CSS file in a (X)HTML document, or as the style file for formatting in any format with source-highlight.
This is the entire file (~400k) with all these examples.
../src/default.css
/* |
mono.css
/* |
mono-alt.css
/* |
sh_golden.css
/* |
sh_night.css
/* |
sh_greenlcd.css
/* |
sh_ide-eclipse.css
/* |
sh_kwrite.css
/* |
sh_easter.css
/* |
sh_emacs.css
/* |
sh_neon.css
/* |
sh_desert.css
/* |
Lots and lots of colors! :-)