mirror of
https://github.com/Stichting-MINIX-Research-Foundation/netbsd.git
synced 2025-09-11 16:15:07 -04:00
60 lines
1.4 KiB
Smalltalk
60 lines
1.4 KiB
Smalltalk
" Example for use of GNU gettext.
|
|
Copyright (C) 2003 Free Software Foundation, Inc.
|
|
This file is in the public domain.
|
|
|
|
Source code of the GNU Smalltalk program.
|
|
"
|
|
|
|
"Unfortunately the PackageLoader method fileInPackage: is extra verbose:
|
|
It outputs 'Loading package I18N'. This will be fixed in smalltalk-2.2.
|
|
|
|
PackageLoader fileInPackage: 'I18N' !
|
|
|
|
In the meantime, we use this workaround."
|
|
|
|
| saved sink |
|
|
saved := Transcript message.
|
|
sink := WriteStream with: String new.
|
|
Transcript message: sink -> #nextPutAll:.
|
|
PackageLoader fileInPackage: 'I18N'.
|
|
Transcript message: saved.
|
|
!
|
|
|
|
Object subclass: #Main
|
|
instanceVariableNames: ''
|
|
classVariableNames: 'NLS'
|
|
poolDictionaries: ''
|
|
category: 'Program'
|
|
!
|
|
!Main methodsFor: 'running'!
|
|
run
|
|
NLS := I18N Locale default messages domain: 'hello-smalltalk' localeDirectory: '@localedir@'.
|
|
Transcript showCr: (NLS ? 'Hello, world!').
|
|
Transcript showCr: ((NLS ? 'This program is running as process number %1.') bindWith: self getpid).
|
|
!
|
|
|
|
|
|
"Unfortunately I cannot define getpid like this - it gives
|
|
'C function getpid not defined'.
|
|
|
|
SystemDictionary defineCFunc: 'getpid'
|
|
withSelectorArgs: 'getpid'
|
|
returning: #int
|
|
args: #()
|
|
!
|
|
|
|
So let's define it through an external process."
|
|
|
|
!Main methodsFor: 'auxiliary stuff'!
|
|
getpid
|
|
| stream pid |
|
|
stream := FileDescriptor popen: 'echo $PPID' dir: #read.
|
|
pid := stream contents asNumber.
|
|
stream close.
|
|
^ pid
|
|
!
|
|
!
|
|
|
|
|
|
Main new run!
|