Linux-Development-Sys Digest #866, Volume #7 Wed, 17 May 00 09:13:15 EDT
Contents:
Re: Can't boot 2.3.99pre8 on Pentium (Anders Larsen)
Signal in Linux? ("Alger")
Re: Windows98 IDE driver screwed up Linux UDMA disk access? (Stefaan A Eeckels)
Re: Problem with 2.3.99pre8 SMP (Aki M Laukkanen)
Re: A book for linux kernel (Failed Cracker)
Re: Need ideas for university funded project for linux (Charlie Ebert)
vi .. search & replace (Greg)
Re: Linux drivers for DVD drives? (Robert Phillips)
Re: vi .. search & replace (Martin Kahlert)
Re: vi .. search & replace (Greg)
Re: A book for linux kernel (Anand Krishnamoorthy)
does linux support RAMDISK??? ("porsche")
Does linux support RAMdisk ? ("porsche")
Re: Does linux support RAMdisk ? (Josef Moellers)
Re: G++ (egcs) problems with pow() under optimisation (Michel Talon)
Re: vi .. search & replace (Anders Larsen)
Re: using ftp within a C-program ("Frank")
----------------------------------------------------------------------------
From: Anders Larsen <[EMAIL PROTECTED]>
Subject: Re: Can't boot 2.3.99pre8 on Pentium
Date: Wed, 17 May 2000 10:50:02 +0200
bill davidsen wrote:
>
> In article <[EMAIL PROTECTED]>,
> Christian Winter <[EMAIL PROTECTED]> wrote:
> | bill davidsen <[EMAIL PROTECTED]> schrob:
> | > I built pre8 on an old Pentium 100, currently running pre6 just fine. On
> | > boot it dumps registers and locks. Since it isn't working after that I
> | > can't scroll back to see what it was trying to do at the point it
> | > failed. Worked perfectly on pre6.
> |
> | Did you _really_ use the same configuration for kernel build?
> | Look if you have e.g. forgotten to aktivate "vga mode select"
> | in 'make config' but a 'vga=xxx' line in lilo.conf.
> | (It was this reason here).
>
> Definitely. I copied the entire pre6 tree to a pre8 directory, applied
> the pre7 and pre8 patches, and did a 'make menuconfig' to check that
> there were no new options I needed to set.
An easier (IMHO) way to check for new options is to do a 'make oldconfig'
[snip]
--
cheers
Anders Larsen
e-mail: alarsen AT baumerident DOT com
Q: What does the CE in Windows CE stand for?
A: Caveat Emptor
------------------------------
From: "Alger" <[EMAIL PROTECTED]>
Subject: Signal in Linux?
Date: 17 May 2000 09:23:12 GMT
Hi,
I would like to know about the signal handling in Linux.
Can the daemon program recevie the signal (such as SIGTERM?).
I try one daemon (written by me) and find it cannot work ?
Do anyone have the same experience ?
------------------------------
From: [EMAIL PROTECTED] (Stefaan A Eeckels)
Subject: Re: Windows98 IDE driver screwed up Linux UDMA disk access?
Date: Wed, 17 May 2000 09:48:00 +0200
In article <[EMAIL PROTECTED]>,
[EMAIL PROTECTED] (Paul D. Smith) writes:
> %% [EMAIL PROTECTED] (Stefaan A Eeckels) writes:
> sae> Did you reboot, or did you power-cycle?
> Uhm... power-cycle.
That really should have removed all the effects of the new
driver.
> You're right, there's a whole boatload of errors in there. I don't know
> how I missed them last time.
>
> -------------------------------------------------------------------------------
> May 16 21:43:59 homebase kernel: hda: dma_intr: status=0x51 { DriveReady
>SeekComplete Error }
> May 16 21:43:59 homebase kernel: hda: dma_intr: error=0x40 { UncorrectableError },
>LBAsect=952, sector=889
> May 16 21:43:59 homebase kernel: end_request: I/O error, dev 03:01 (hda), sector 889
> May 16 21:43:59 homebase kernel: bread in fat_access failed
>
> <...I get the same thing 4 more times, about 2 seconds apart...>
>
> May 16 21:44:11 homebase kernel: hda: dma_intr: status=0x51 { DriveReady
>SeekComplete Error }
> May 16 21:44:11 homebase kernel: hda: dma_intr: error=0x40 { UncorrectableError },
>LBAsect=952, sector=889
> May 16 21:44:11 homebase kernel: end_request: I/O error, dev 03:01 (hda), sector 889
> May 16 21:44:11 homebase kernel: bread in fat_access failed
> May 16 21:44:11 homebase kernel: Filesystem panic (dev 03:01).
> May 16 21:44:11 homebase kernel: File without EOF
> May 16 21:44:11 homebase kernel: File system has been set read-only
> May 16 21:44:11 homebase kernel: FAT: fat_truncate called though fs is read-only,
>uhh...
> -------------------------------------------------------------------------------
Now that's an easy one: you've got a bad sector, and the machine tells
you nicely which one: 889. As this sector falls in the File Allocation
Table, the Linux driver disables writes to the disk, to avoid damage
to the logical structure.
> sae> You could try to boot from a rescue floppy (something
> sae> like tomsrtbt) and see if the problem persists.
>
> Hmm. That sort of presupposes the problem is in Linux somewhere?
I suggested that to avoid going through booting from Windows, or
using hda's MBR.
> sae> Use "hdparm" to get a more readable display of the settings:
> sae> ebola:~ # hdparm -v /dev/hda
>
> /dev/hda:
> multcount = 0 (off)
> I/O support = 0 (default 16-bit)
> unmaskirq = 0 (off)
> using_dma = 1 (on)
> keepsettings = 0 (off)
> nowerr = 0 (off)
> readonly = 0 (off)
> readahead = 8 (on)
> geometry = 1232/255/63, sectors = 19807200, start = 0
>
> /dev/hdb:
> multcount = 0 (off)
> I/O support = 0 (default 16-bit)
> unmaskirq = 1 (on)
> using_dma = 0 (off)
> keepsettings = 0 (off)
> nowerr = 0 (off)
> readonly = 0 (off)
> readahead = 8 (on)
> geometry = 1868/255/63, sectors = 30015216, start = 0
>
> sae> Did you notice the "keepsettings"? It's quite possible that
> sae> the new driver enabled DMA, and that your motherboard/drive
> sae> combination can't handle it.
>
> using_dma is on, and keepsettings is off. It does seem suspicious.
> How do I "fix" that? Can I just use hdparm -d0 /dev/hda?
No need to fix anything. Your problem is due to hda going
bad (EIDE drives correct bad tracks automatically. When they
start showing them to the OS, it means that the alternate track
table is overflowing.
If I were you, I'd get a new drive.
There's also a bit of tuning you can do to make your system
run somewhat faster:
hdparm -c 1 -d 1 -m 8 -A 1 -k 1 -u 1 /dev/hda
-c 1: Use 32-bit IO to the PCI bus
-d 1: Use DMA (should be OK with your motherboard)
-m 8: allow multiple sector IO (8 sectors)
-A 1: Enable the IDE drive's read-lookahead feature (usually ON by default)
-u 1: Allow certain interrupts to be unmasked (OK with recent motherboards)
-k 1: keep -dmu options over a soft reset.
In my experience, these settings work with most recent drive/motherboard
combinations (if not all), but do keep an eye on /var/log/messages to
see if nothing's happening.
Take care,
--
Stefaan
--
--PGP key available from PGP key servers (http://www.pgp.net/pgpnet/)--
Ninety-Ninety Rule of Project Schedules:
The first ninety percent of the task takes ninety percent of
the time, and the last ten percent takes the other ninety percent.
------------------------------
From: [EMAIL PROTECTED] (Aki M Laukkanen)
Subject: Re: Problem with 2.3.99pre8 SMP
Date: 17 May 2000 10:24:01 GMT
In article <8fpbtl$lct$[EMAIL PROTECTED]>, bill davidsen wrote:
>System locks hard on:
> mount -o ro,loop sw7install.iso /cdrom
>Mount works and copy process fails on:
> mount -o ro,loop -t iso9660 sw7install.iso /cdrom
> dd /cdrom/bootdsks.144/bare.i /dev/fd0 bs=18k
Loopback is b0rken (as Al Viro would call it) on 2.3.99.
--
D.
------------------------------
From: Failed Cracker <[EMAIL PROTECTED]>
Subject: Re: A book for linux kernel
Date: Wed, 17 May 2000 13:01:43 +0000
Yes, but who prints it? And the authors ? Tnx.
_______
/ \
/ _____ \
| / __ \ | o o
| | / \ | | | |
| | | \/ | | |_|
| | ___/ | / \
| _______/____________/ /
\ /
________________________/
By Failed Cracker 79
Alias Mirko Bonasorte
On Tue, 16 May 2000, John Gluck wrote:
> Failed Cracker wrote:
> >
> > Hallo. I need an advice: i would like to become a linux kernel developer,
> > but I don't really know where to start from. I am a c-c++, assembler x86
> > programmer, but without a guide about the logical organization of the
> > kernel it's hard to manipulate the source code. Can anybody suggest me a
> > book or a document about it? Tnx.
> >
> > _______
> > / \
> > / _____ \
> > | / __ \ | o o
> > | | / \ | | | |
> > | | | \/ | | |_|
> > | | ___/ | / \
> > | _______/____________/ /
> > \ /
> > ________________________/
> >
> > By Failed Cracker 79
> > Alias Mirko Bonasorte
>
> There is a book called "linux kernel internals" that may be of help to
> you. It does not cover the 2.3 kernels but it will help you get started.
>
> --
> John Gluck (Passport Kernel Design Group)
>
> (613) 765-8392 ESN 395-8392
>
> Unless otherwise stated, any opinions expressed here are strictly my own
> and do not reflect any official position of Nortel Networks.
>
------------------------------
From: Charlie Ebert <[EMAIL PROTECTED]>
Crossposted-To:
comp.os.linux,comp.os.linux.development,comp.os.linux.development.apps,comp.os.linux.misc,comp.os.linux.setup,comp.os.linux.advocacy
Subject: Re: Need ideas for university funded project for linux
Date: Wed, 17 May 2000 11:34:29 GMT
Richard Gill wrote:
> =
> U can think about a New WindowManager, with a good interface, and toolk=
it
> independant, but with possibly rely to Gnome component (I mean bonobo f=
or
> example). I'm already beginning on that project (alone for the moment, =
and
> only on paper) so we could help together ;-)
> =
> bye.
> =
> Mongoose <[EMAIL PROTECTED]> a =E9crit dans le message :
> [EMAIL PROTECTED]
> > Hello,
> > I am attempting to start a college project and have two of my
> > ideas already being worked on. So I wanted to know what other people
> > had for suggestions for linux projects? I was thinking of something
> > along the lines of a project that would help promote the use of linux=
=2E
> > What is something that most people could use? Something that could
> > make a good 1 year R&D project?
How about a mandatory requirment that everyone use Linux.
See if an entire university can funcition using nothing but Linux.
Charlie
------------------------------
From: Greg <[EMAIL PROTECTED]>
Subject: vi .. search & replace
Date: Wed, 17 May 2000 07:52:36 -0400
Reply-To: [EMAIL PROTECTED]
Some of you may be familiar with vi's search and replace command. As an
example, if you wanted to replace all instances of 'dog' in your open
document with instances of 'cat', you might enter this command:
:%s/dog/cat
The problem for me comes when I want to replace text that includes a
pathname. The '/' character is constantly interpreted by vi as part of
its command. So, for example, if I wanted to change all instance of
'/usr' to '/etc', as such:
:%s//usr//etc
the command interpreter gets confused. I've tried several remedies, but
none of them work:
CTRL-V / ... to get the literal value of '/'
[CTRL-V /] ... again, to try to get the literal value
"/"
'/'
...
Any answer would be appreciated. I have wasted too much time trying in
vain.
Greg
------------------------------
From: Robert Phillips <[EMAIL PROTECTED]>
Subject: Re: Linux drivers for DVD drives?
Date: Wed, 17 May 2000 08:03:32 -0400
I've considered getting a DVD-RAM, but I have not found out the
write-rate on these drives my looking at ads, at least. Do you have
an estimate of MB/sec write speed? Eg, how long is the total time, say
to copy a 100 megabyte file to the dvd-ram, from when you enter the cp
command
to when it is safe to eject the disk?
How long for a 1 megabyte file?
Thanks,
Robert
Stefan Homburg wrote:
>
> I am using Panosonic's DVD-RAM drive (5,2 gigabyte) and asked
> myself the same question when I considered moving to linux. Curiously,
> Panasonic provides a "linux driver", packed as a .zip file, but after
> you
> gunzip it, it only contains a textfile claiming that you do not need a
> driver.
>
> And this is actually true. My DVD-RAM is simply /dev/sdb. It is
> treated as a harddisk by the system, with the exception that it cannot
> be partitioned.
>
> --
> Prof. Dr. Stefan Homburg
> Lehrstuhl �ffentliche Finanzen
> Universit�t Hannover
> K�nigsworther Platz 1
> D-30167 Hannover
>
> Tel.: (0049) 511-762-5633
> Fax.: (0049) 511-762-5656
------------------------------
From: [EMAIL PROTECTED] (Martin Kahlert)
Subject: Re: vi .. search & replace
Date: 17 May 2000 12:06:45 GMT
Reply-To: [EMAIL PROTECTED]
In article <[EMAIL PROTECTED]>,
Greg <[EMAIL PROTECTED]> writes:
> Some of you may be familiar with vi's search and replace command. As an
> example, if you wanted to replace all instances of 'dog' in your open
> document with instances of 'cat', you might enter this command:
>
>:%s/dog/cat
This does only replace the first dog in each line to cat.
use
:%s/dog/cat/g
instead.
> The problem for me comes when I want to replace text that includes a
> pathname. The '/' character is constantly interpreted by vi as part of
> its command. So, for example, if I wanted to change all instance of
> '/usr' to '/etc', as such:
>
>:%s//usr//etc
Try
:%s/\/usr/\/etc/g
Ugly, isn't it?
But there is a better variant: you can use other delimiters than /
So
:%s#/usr#/etc#g
should work, too.
Bye,
Martin.
--
The early bird gets the worm. If you want something else for
breakfast, get up later.
------------------------------
From: Greg <[EMAIL PROTECTED]>
Subject: Re: vi .. search & replace
Date: Wed, 17 May 2000 08:07:37 -0400
Reply-To: [EMAIL PROTECTED]
Someone has e-mailed me the answer ....
:%s/\/usr/\/etc
Awesome.
Greg wrote:
> Some of you may be familiar with vi's search and replace command. As an
> example, if you wanted to replace all instances of 'dog' in your open
> document with instances of 'cat', you might enter this command:
>
> :%s/dog/cat
>
> The problem for me comes when I want to replace text that includes a
> pathname. The '/' character is constantly interpreted by vi as part of
> its command. So, for example, if I wanted to change all instance of
> '/usr' to '/etc', as such:
>
> :%s//usr//etc
>
> the command interpreter gets confused. I've tried several remedies, but
> none of them work:
>
> CTRL-V / ... to get the literal value of '/'
> [CTRL-V /] ... again, to try to get the literal value
> "/"
> '/'
> ...
>
> Any answer would be appreciated. I have wasted too much time trying in
> vain.
>
> Greg
------------------------------
From: Anand Krishnamoorthy <[EMAIL PROTECTED]>
Subject: Re: A book for linux kernel
Date: Wed, 17 May 2000 17:34:15 -0400
==============EFEF9102CE7943ACFC19EB32
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
That is an excellent book for a start..
Linux Kernel Internals
by M Beck, H Bohme, MDziadzka, U Kunitz et al
Publisher: Addison-Wesley
Anand .K
Failed Cracker wrote:
> Yes, but who prints it? And the authors ? Tnx.
>
> _______
> / \
> / _____ \
> | / __ \ | o o
> | | / \ | | | |
> | | | \/ | | |_|
> | | ___/ | / \
> | _______/____________/ /
> \ /
> ________________________/
>
> By Failed Cracker 79
> Alias Mirko Bonasorte
>
> On Tue, 16 May 2000, John Gluck wrote:
>
> > Failed Cracker wrote:
> > >
> > > Hallo. I need an advice: i would like to become a linux kernel developer,
> > > but I don't really know where to start from. I am a c-c++, assembler x86
> > > programmer, but without a guide about the logical organization of the
> > > kernel it's hard to manipulate the source code. Can anybody suggest me a
> > > book or a document about it? Tnx.
> > >
> > > _______
> > > / \
> > > / _____ \
> > > | / __ \ | o o
> > > | | / \ | | | |
> > > | | | \/ | | |_|
> > > | | ___/ | / \
> > > | _______/____________/ /
> > > \ /
> > > ________________________/
> > >
> > > By Failed Cracker 79
> > > Alias Mirko Bonasorte
> >
> > There is a book called "linux kernel internals" that may be of help to
> > you. It does not cover the 2.3 kernels but it will help you get started.
> >
> > --
> > John Gluck (Passport Kernel Design Group)
> >
> > (613) 765-8392 ESN 395-8392
> >
> > Unless otherwise stated, any opinions expressed here are strictly my own
> > and do not reflect any official position of Nortel Networks.
> >
==============EFEF9102CE7943ACFC19EB32
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: 7bit
<HTML>
That is an excellent book for a start..
<BR>Linux Kernel Internals
<BR> by M Beck, H Bohme, MDziadzka, U Kunitz et al
<BR>Publisher: Addison-Wesley
<P>Anand .K<I></I>
<P><I>Failed Cracker wrote:</I>
<BLOCKQUOTE TYPE=CITE><I>Yes, but who prints it? And the authors ? Tnx.</I><I></I>
<P><I> _______</I>
<BR><I>
/
\</I>
<BR><I> / _____
\</I>
<BR><I> | / __ \
|
o o</I>
<BR><I> | | / \ |
|
| |</I>
<BR><I> | | | \/ |
|
|_|</I>
<BR><I> | | ___/
| /
\</I>
<BR><I> |
_______/____________/
/</I>
<BR><I>
\
/</I>
<BR><I>
________________________/</I><I></I>
<P><I>By Failed Cracker 79</I>
<BR><I>Alias Mirko Bonasorte</I><I></I>
<P><I>On Tue, 16 May 2000, John Gluck wrote:</I><I></I>
<P><I>> Failed Cracker wrote:</I>
<BR><I>> ></I>
<BR><I>> > Hallo. I need an advice: i would like to become a linux kernel
developer,</I>
<BR><I>> > but I don't really know where to start from. I am a c-c++, assembler
x86</I>
<BR><I>> > programmer, but without a guide about the logical organization
of the</I>
<BR><I>> > kernel it's hard to manipulate the source code. Can anybody
suggest me a</I>
<BR><I>> > book or a document about it? Tnx.</I>
<BR><I>> ></I>
<BR><I>> >
_______</I>
<BR><I>> >
/ \</I>
<BR><I>> > /
_____ \</I>
<BR><I>> > | /
__ \
|
o o</I>
<BR><I>> > | | /
\ | |
| |</I>
<BR><I>> > | | |
\/ | |
|_|</I>
<BR><I>> > | | ___/
| /
\</I>
<BR><I>> > |
_______/____________/
/</I>
<BR><I>> >
\
/</I>
<BR><I>> >
________________________/</I>
<BR><I>> ></I>
<BR><I>> > By Failed Cracker 79</I>
<BR><I>> > Alias Mirko Bonasorte</I>
<BR><I>></I>
<BR><I>> There is a book called "linux kernel internals" that may be of
help to</I>
<BR><I>> you. It does not cover the 2.3 kernels but it will help you get
started.</I>
<BR><I>></I>
<BR><I>> --</I>
<BR><I>> John Gluck (Passport Kernel Design Group)</I>
<BR><I>></I>
<BR><I>> (613) 765-8392 ESN 395-8392</I>
<BR><I>></I>
<BR><I>> Unless otherwise stated, any opinions expressed here are strictly
my own</I>
<BR><I>> and do not reflect any official position of Nortel Networks.</I>
<BR><I>></I></BLOCKQUOTE>
<I> </I></HTML>
==============EFEF9102CE7943ACFC19EB32==
------------------------------
From: "porsche" <[EMAIL PROTECTED]>
Subject: does linux support RAMDISK???
Date: Wed, 17 May 2000 20:11:41 +0800
as title, and how large can it support (4GB for example?)
------------------------------
From: "porsche" <[EMAIL PROTECTED]>
Subject: Does linux support RAMdisk ?
Date: Wed, 17 May 2000 20:13:57 +0800
as title , and does anyone know how large can it support??
porshce
------------------------------
From: Josef Moellers <[EMAIL PROTECTED]>
Subject: Re: Does linux support RAMdisk ?
Date: Wed, 17 May 2000 14:20:21 +0200
porsche wrote:
> =
> as title , and does anyone know how large can it support??
> =
> porshce
man ram
How about a real name next time?
-- =
Josef M=F6llers
Fujitsu Siemens Computers
SHV Server DS 1
------------------------------
From: Michel Talon <[EMAIL PROTECTED]>
Subject: Re: G++ (egcs) problems with pow() under optimisation
Date: Wed, 17 May 2000 14:03:41 +0200
Jeffrey Ng <[EMAIL PROTECTED]> wrote:
> Has anyone had any problems when they enable compiler optimisations for
> programs using the pow() math function call?
> I have a huge scientific program that uses a lot of power calls in lots
> of places and used to wonder why it would seg fault when I enabled
> optimisations. Just recently, I have narrowed it down to the culprit.
> The following little piece of code can trigger the fault on two
> different machines that I've tried (Pentium II and K7 Athlon).
> Compil is standard: g++ -O -o powtest powtest.cc
> I've got egcs-2.90.29 980515.
> Can anybody reproduce the error on their g++ compilers?
> Cheers,
> Jeffrey Ng.
> ------------
> #include <math.h>
> #include <stdio.h>
> void main(int argc, char **argv){
> char modelFileName[254], classFileName[254], saveFileName[254];
> printf("%f\n", pow(1.2,2.5)); fflush(stdout);
> }
Here i compile this on a FreeBSD 4.0 machine, with
g++ -v
gcc version 2.95.2 19991024 (release)
and the output is no coredump, result
1.577441
which seems true.
--
Michel Talon
------------------------------
From: Anders Larsen <[EMAIL PROTECTED]>
Subject: Re: vi .. search & replace
Date: Wed, 17 May 2000 14:14:44 +0200
Greg wrote:
>
> Some of you may be familiar with vi's search and replace command. As an
> example, if you wanted to replace all instances of 'dog' in your open
> document with instances of 'cat', you might enter this command:
>
> :%s/dog/cat
>
> The problem for me comes when I want to replace text that includes a
> pathname. The '/' character is constantly interpreted by vi as part of
> its command. So, for example, if I wanted to change all instance of
> '/usr' to '/etc', as such:
>
> :%s//usr//etc
>
> the command interpreter gets confused. I've tried several remedies, but
> none of them work:
>
> CTRL-V / ... to get the literal value of '/'
> [CTRL-V /] ... again, to try to get the literal value
> "/"
> '/'
> ...
>
> Any answer would be appreciated. I have wasted too much time trying in
> vain.
Just escape the slashes by backslashes, like
:%s/\/usr/\/etc/
In the same manner you can escape all other meta-characters, like [, & etc.
--
cheers
Anders Larsen
e-mail: alarsen AT baumerident DOT com
Q: What does the CE in Windows CE stand for?
A: Caveat Emptor
------------------------------
From: "Frank" <[EMAIL PROTECTED]>
Subject: Re: using ftp within a C-program
Date: Wed, 17 May 2000 12:49:38 GMT
Josef Moellers <[EMAIL PROTECTED]>...
^
^ You could also use the ".netrc" funtionality of ftp:
^
Wouldn't it be better to redirect stdin from an input file for this?
fp=fopen("/tmp/ftp.in", "wt");
fprintf{fp, "\
user me\n\
pass #**&%%@$\n\
binary\n\
cd /mine\n\
mget *.new *\n\
");
fclose(fp);
system("ftp -ni server</tmp/ftp.in");
unlink("/tmp/ftp.in");
I've done this with a script but not with a binary on Linux. Is there a
potential problem with redirecting stdin in a system call?
I realize that this problem isn't really related to this group but my question
is directed more toward a better understanding of the system.
Frank
------------------------------
** FOR YOUR REFERENCE **
The service address, to which questions about the list itself and requests
to be added to or deleted from it should be directed, is:
Internet: [EMAIL PROTECTED]
You can send mail to the entire list (and comp.os.linux.development.system) via:
Internet: [EMAIL PROTECTED]
Linux may be obtained via one of these FTP sites:
ftp.funet.fi pub/Linux
tsx-11.mit.edu pub/linux
sunsite.unc.edu pub/Linux
End of Linux-Development-System Digest
******************************