File: issue25.txt

package info (click to toggle)
lg-issue25 5-3
  • links: PTS
  • area: main
  • in suites: woody
  • size: 1,552 kB
  • ctags: 68
  • sloc: tcl: 69; makefile: 37; sh: 4
file content (7848 lines) | stat: -rw-r--r-- 270,184 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
3557
3558
3559
3560
3561
3562
3563
3564
3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
3578
3579
3580
3581
3582
3583
3584
3585
3586
3587
3588
3589
3590
3591
3592
3593
3594
3595
3596
3597
3598
3599
3600
3601
3602
3603
3604
3605
3606
3607
3608
3609
3610
3611
3612
3613
3614
3615
3616
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
3647
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658
3659
3660
3661
3662
3663
3664
3665
3666
3667
3668
3669
3670
3671
3672
3673
3674
3675
3676
3677
3678
3679
3680
3681
3682
3683
3684
3685
3686
3687
3688
3689
3690
3691
3692
3693
3694
3695
3696
3697
3698
3699
3700
3701
3702
3703
3704
3705
3706
3707
3708
3709
3710
3711
3712
3713
3714
3715
3716
3717
3718
3719
3720
3721
3722
3723
3724
3725
3726
3727
3728
3729
3730
3731
3732
3733
3734
3735
3736
3737
3738
3739
3740
3741
3742
3743
3744
3745
3746
3747
3748
3749
3750
3751
3752
3753
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
3766
3767
3768
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
3781
3782
3783
3784
3785
3786
3787
3788
3789
3790
3791
3792
3793
3794
3795
3796
3797
3798
3799
3800
3801
3802
3803
3804
3805
3806
3807
3808
3809
3810
3811
3812
3813
3814
3815
3816
3817
3818
3819
3820
3821
3822
3823
3824
3825
3826
3827
3828
3829
3830
3831
3832
3833
3834
3835
3836
3837
3838
3839
3840
3841
3842
3843
3844
3845
3846
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
3857
3858
3859
3860
3861
3862
3863
3864
3865
3866
3867
3868
3869
3870
3871
3872
3873
3874
3875
3876
3877
3878
3879
3880
3881
3882
3883
3884
3885
3886
3887
3888
3889
3890
3891
3892
3893
3894
3895
3896
3897
3898
3899
3900
3901
3902
3903
3904
3905
3906
3907
3908
3909
3910
3911
3912
3913
3914
3915
3916
3917
3918
3919
3920
3921
3922
3923
3924
3925
3926
3927
3928
3929
3930
3931
3932
3933
3934
3935
3936
3937
3938
3939
3940
3941
3942
3943
3944
3945
3946
3947
3948
3949
3950
3951
3952
3953
3954
3955
3956
3957
3958
3959
3960
3961
3962
3963
3964
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981
3982
3983
3984
3985
3986
3987
3988
3989
3990
3991
3992
3993
3994
3995
3996
3997
3998
3999
4000
4001
4002
4003
4004
4005
4006
4007
4008
4009
4010
4011
4012
4013
4014
4015
4016
4017
4018
4019
4020
4021
4022
4023
4024
4025
4026
4027
4028
4029
4030
4031
4032
4033
4034
4035
4036
4037
4038
4039
4040
4041
4042
4043
4044
4045
4046
4047
4048
4049
4050
4051
4052
4053
4054
4055
4056
4057
4058
4059
4060
4061
4062
4063
4064
4065
4066
4067
4068
4069
4070
4071
4072
4073
4074
4075
4076
4077
4078
4079
4080
4081
4082
4083
4084
4085
4086
4087
4088
4089
4090
4091
4092
4093
4094
4095
4096
4097
4098
4099
4100
4101
4102
4103
4104
4105
4106
4107
4108
4109
4110
4111
4112
4113
4114
4115
4116
4117
4118
4119
4120
4121
4122
4123
4124
4125
4126
4127
4128
4129
4130
4131
4132
4133
4134
4135
4136
4137
4138
4139
4140
4141
4142
4143
4144
4145
4146
4147
4148
4149
4150
4151
4152
4153
4154
4155
4156
4157
4158
4159
4160
4161
4162
4163
4164
4165
4166
4167
4168
4169
4170
4171
4172
4173
4174
4175
4176
4177
4178
4179
4180
4181
4182
4183
4184
4185
4186
4187
4188
4189
4190
4191
4192
4193
4194
4195
4196
4197
4198
4199
4200
4201
4202
4203
4204
4205
4206
4207
4208
4209
4210
4211
4212
4213
4214
4215
4216
4217
4218
4219
4220
4221
4222
4223
4224
4225
4226
4227
4228
4229
4230
4231
4232
4233
4234
4235
4236
4237
4238
4239
4240
4241
4242
4243
4244
4245
4246
4247
4248
4249
4250
4251
4252
4253
4254
4255
4256
4257
4258
4259
4260
4261
4262
4263
4264
4265
4266
4267
4268
4269
4270
4271
4272
4273
4274
4275
4276
4277
4278
4279
4280
4281
4282
4283
4284
4285
4286
4287
4288
4289
4290
4291
4292
4293
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
4304
4305
4306
4307
4308
4309
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
4320
4321
4322
4323
4324
4325
4326
4327
4328
4329
4330
4331
4332
4333
4334
4335
4336
4337
4338
4339
4340
4341
4342
4343
4344
4345
4346
4347
4348
4349
4350
4351
4352
4353
4354
4355
4356
4357
4358
4359
4360
4361
4362
4363
4364
4365
4366
4367
4368
4369
4370
4371
4372
4373
4374
4375
4376
4377
4378
4379
4380
4381
4382
4383
4384
4385
4386
4387
4388
4389
4390
4391
4392
4393
4394
4395
4396
4397
4398
4399
4400
4401
4402
4403
4404
4405
4406
4407
4408
4409
4410
4411
4412
4413
4414
4415
4416
4417
4418
4419
4420
4421
4422
4423
4424
4425
4426
4427
4428
4429
4430
4431
4432
4433
4434
4435
4436
4437
4438
4439
4440
4441
4442
4443
4444
4445
4446
4447
4448
4449
4450
4451
4452
4453
4454
4455
4456
4457
4458
4459
4460
4461
4462
4463
4464
4465
4466
4467
4468
4469
4470
4471
4472
4473
4474
4475
4476
4477
4478
4479
4480
4481
4482
4483
4484
4485
4486
4487
4488
4489
4490
4491
4492
4493
4494
4495
4496
4497
4498
4499
4500
4501
4502
4503
4504
4505
4506
4507
4508
4509
4510
4511
4512
4513
4514
4515
4516
4517
4518
4519
4520
4521
4522
4523
4524
4525
4526
4527
4528
4529
4530
4531
4532
4533
4534
4535
4536
4537
4538
4539
4540
4541
4542
4543
4544
4545
4546
4547
4548
4549
4550
4551
4552
4553
4554
4555
4556
4557
4558
4559
4560
4561
4562
4563
4564
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
4575
4576
4577
4578
4579
4580
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
4591
4592
4593
4594
4595
4596
4597
4598
4599
4600
4601
4602
4603
4604
4605
4606
4607
4608
4609
4610
4611
4612
4613
4614
4615
4616
4617
4618
4619
4620
4621
4622
4623
4624
4625
4626
4627
4628
4629
4630
4631
4632
4633
4634
4635
4636
4637
4638
4639
4640
4641
4642
4643
4644
4645
4646
4647
4648
4649
4650
4651
4652
4653
4654
4655
4656
4657
4658
4659
4660
4661
4662
4663
4664
4665
4666
4667
4668
4669
4670
4671
4672
4673
4674
4675
4676
4677
4678
4679
4680
4681
4682
4683
4684
4685
4686
4687
4688
4689
4690
4691
4692
4693
4694
4695
4696
4697
4698
4699
4700
4701
4702
4703
4704
4705
4706
4707
4708
4709
4710
4711
4712
4713
4714
4715
4716
4717
4718
4719
4720
4721
4722
4723
4724
4725
4726
4727
4728
4729
4730
4731
4732
4733
4734
4735
4736
4737
4738
4739
4740
4741
4742
4743
4744
4745
4746
4747
4748
4749
4750
4751
4752
4753
4754
4755
4756
4757
4758
4759
4760
4761
4762
4763
4764
4765
4766
4767
4768
4769
4770
4771
4772
4773
4774
4775
4776
4777
4778
4779
4780
4781
4782
4783
4784
4785
4786
4787
4788
4789
4790
4791
4792
4793
4794
4795
4796
4797
4798
4799
4800
4801
4802
4803
4804
4805
4806
4807
4808
4809
4810
4811
4812
4813
4814
4815
4816
4817
4818
4819
4820
4821
4822
4823
4824
4825
4826
4827
4828
4829
4830
4831
4832
4833
4834
4835
4836
4837
4838
4839
4840
4841
4842
4843
4844
4845
4846
4847
4848
4849
4850
4851
4852
4853
4854
4855
4856
4857
4858
4859
4860
4861
4862
4863
4864
4865
4866
4867
4868
4869
4870
4871
4872
4873
4874
4875
4876
4877
4878
4879
4880
4881
4882
4883
4884
4885
4886
4887
4888
4889
4890
4891
4892
4893
4894
4895
4896
4897
4898
4899
4900
4901
4902
4903
4904
4905
4906
4907
4908
4909
4910
4911
4912
4913
4914
4915
4916
4917
4918
4919
4920
4921
4922
4923
4924
4925
4926
4927
4928
4929
4930
4931
4932
4933
4934
4935
4936
4937
4938
4939
4940
4941
4942
4943
4944
4945
4946
4947
4948
4949
4950
4951
4952
4953
4954
4955
4956
4957
4958
4959
4960
4961
4962
4963
4964
4965
4966
4967
4968
4969
4970
4971
4972
4973
4974
4975
4976
4977
4978
4979
4980
4981
4982
4983
4984
4985
4986
4987
4988
4989
4990
4991
4992
4993
4994
4995
4996
4997
4998
4999
5000
5001
5002
5003
5004
5005
5006
5007
5008
5009
5010
5011
5012
5013
5014
5015
5016
5017
5018
5019
5020
5021
5022
5023
5024
5025
5026
5027
5028
5029
5030
5031
5032
5033
5034
5035
5036
5037
5038
5039
5040
5041
5042
5043
5044
5045
5046
5047
5048
5049
5050
5051
5052
5053
5054
5055
5056
5057
5058
5059
5060
5061
5062
5063
5064
5065
5066
5067
5068
5069
5070
5071
5072
5073
5074
5075
5076
5077
5078
5079
5080
5081
5082
5083
5084
5085
5086
5087
5088
5089
5090
5091
5092
5093
5094
5095
5096
5097
5098
5099
5100
5101
5102
5103
5104
5105
5106
5107
5108
5109
5110
5111
5112
5113
5114
5115
5116
5117
5118
5119
5120
5121
5122
5123
5124
5125
5126
5127
5128
5129
5130
5131
5132
5133
5134
5135
5136
5137
5138
5139
5140
5141
5142
5143
5144
5145
5146
5147
5148
5149
5150
5151
5152
5153
5154
5155
5156
5157
5158
5159
5160
5161
5162
5163
5164
5165
5166
5167
5168
5169
5170
5171
5172
5173
5174
5175
5176
5177
5178
5179
5180
5181
5182
5183
5184
5185
5186
5187
5188
5189
5190
5191
5192
5193
5194
5195
5196
5197
5198
5199
5200
5201
5202
5203
5204
5205
5206
5207
5208
5209
5210
5211
5212
5213
5214
5215
5216
5217
5218
5219
5220
5221
5222
5223
5224
5225
5226
5227
5228
5229
5230
5231
5232
5233
5234
5235
5236
5237
5238
5239
5240
5241
5242
5243
5244
5245
5246
5247
5248
5249
5250
5251
5252
5253
5254
5255
5256
5257
5258
5259
5260
5261
5262
5263
5264
5265
5266
5267
5268
5269
5270
5271
5272
5273
5274
5275
5276
5277
5278
5279
5280
5281
5282
5283
5284
5285
5286
5287
5288
5289
5290
5291
5292
5293
5294
5295
5296
5297
5298
5299
5300
5301
5302
5303
5304
5305
5306
5307
5308
5309
5310
5311
5312
5313
5314
5315
5316
5317
5318
5319
5320
5321
5322
5323
5324
5325
5326
5327
5328
5329
5330
5331
5332
5333
5334
5335
5336
5337
5338
5339
5340
5341
5342
5343
5344
5345
5346
5347
5348
5349
5350
5351
5352
5353
5354
5355
5356
5357
5358
5359
5360
5361
5362
5363
5364
5365
5366
5367
5368
5369
5370
5371
5372
5373
5374
5375
5376
5377
5378
5379
5380
5381
5382
5383
5384
5385
5386
5387
5388
5389
5390
5391
5392
5393
5394
5395
5396
5397
5398
5399
5400
5401
5402
5403
5404
5405
5406
5407
5408
5409
5410
5411
5412
5413
5414
5415
5416
5417
5418
5419
5420
5421
5422
5423
5424
5425
5426
5427
5428
5429
5430
5431
5432
5433
5434
5435
5436
5437
5438
5439
5440
5441
5442
5443
5444
5445
5446
5447
5448
5449
5450
5451
5452
5453
5454
5455
5456
5457
5458
5459
5460
5461
5462
5463
5464
5465
5466
5467
5468
5469
5470
5471
5472
5473
5474
5475
5476
5477
5478
5479
5480
5481
5482
5483
5484
5485
5486
5487
5488
5489
5490
5491
5492
5493
5494
5495
5496
5497
5498
5499
5500
5501
5502
5503
5504
5505
5506
5507
5508
5509
5510
5511
5512
5513
5514
5515
5516
5517
5518
5519
5520
5521
5522
5523
5524
5525
5526
5527
5528
5529
5530
5531
5532
5533
5534
5535
5536
5537
5538
5539
5540
5541
5542
5543
5544
5545
5546
5547
5548
5549
5550
5551
5552
5553
5554
5555
5556
5557
5558
5559
5560
5561
5562
5563
5564
5565
5566
5567
5568
5569
5570
5571
5572
5573
5574
5575
5576
5577
5578
5579
5580
5581
5582
5583
5584
5585
5586
5587
5588
5589
5590
5591
5592
5593
5594
5595
5596
5597
5598
5599
5600
5601
5602
5603
5604
5605
5606
5607
5608
5609
5610
5611
5612
5613
5614
5615
5616
5617
5618
5619
5620
5621
5622
5623
5624
5625
5626
5627
5628
5629
5630
5631
5632
5633
5634
5635
5636
5637
5638
5639
5640
5641
5642
5643
5644
5645
5646
5647
5648
5649
5650
5651
5652
5653
5654
5655
5656
5657
5658
5659
5660
5661
5662
5663
5664
5665
5666
5667
5668
5669
5670
5671
5672
5673
5674
5675
5676
5677
5678
5679
5680
5681
5682
5683
5684
5685
5686
5687
5688
5689
5690
5691
5692
5693
5694
5695
5696
5697
5698
5699
5700
5701
5702
5703
5704
5705
5706
5707
5708
5709
5710
5711
5712
5713
5714
5715
5716
5717
5718
5719
5720
5721
5722
5723
5724
5725
5726
5727
5728
5729
5730
5731
5732
5733
5734
5735
5736
5737
5738
5739
5740
5741
5742
5743
5744
5745
5746
5747
5748
5749
5750
5751
5752
5753
5754
5755
5756
5757
5758
5759
5760
5761
5762
5763
5764
5765
5766
5767
5768
5769
5770
5771
5772
5773
5774
5775
5776
5777
5778
5779
5780
5781
5782
5783
5784
5785
5786
5787
5788
5789
5790
5791
5792
5793
5794
5795
5796
5797
5798
5799
5800
5801
5802
5803
5804
5805
5806
5807
5808
5809
5810
5811
5812
5813
5814
5815
5816
5817
5818
5819
5820
5821
5822
5823
5824
5825
5826
5827
5828
5829
5830
5831
5832
5833
5834
5835
5836
5837
5838
5839
5840
5841
5842
5843
5844
5845
5846
5847
5848
5849
5850
5851
5852
5853
5854
5855
5856
5857
5858
5859
5860
5861
5862
5863
5864
5865
5866
5867
5868
5869
5870
5871
5872
5873
5874
5875
5876
5877
5878
5879
5880
5881
5882
5883
5884
5885
5886
5887
5888
5889
5890
5891
5892
5893
5894
5895
5896
5897
5898
5899
5900
5901
5902
5903
5904
5905
5906
5907
5908
5909
5910
5911
5912
5913
5914
5915
5916
5917
5918
5919
5920
5921
5922
5923
5924
5925
5926
5927
5928
5929
5930
5931
5932
5933
5934
5935
5936
5937
5938
5939
5940
5941
5942
5943
5944
5945
5946
5947
5948
5949
5950
5951
5952
5953
5954
5955
5956
5957
5958
5959
5960
5961
5962
5963
5964
5965
5966
5967
5968
5969
5970
5971
5972
5973
5974
5975
5976
5977
5978
5979
5980
5981
5982
5983
5984
5985
5986
5987
5988
5989
5990
5991
5992
5993
5994
5995
5996
5997
5998
5999
6000
6001
6002
6003
6004
6005
6006
6007
6008
6009
6010
6011
6012
6013
6014
6015
6016
6017
6018
6019
6020
6021
6022
6023
6024
6025
6026
6027
6028
6029
6030
6031
6032
6033
6034
6035
6036
6037
6038
6039
6040
6041
6042
6043
6044
6045
6046
6047
6048
6049
6050
6051
6052
6053
6054
6055
6056
6057
6058
6059
6060
6061
6062
6063
6064
6065
6066
6067
6068
6069
6070
6071
6072
6073
6074
6075
6076
6077
6078
6079
6080
6081
6082
6083
6084
6085
6086
6087
6088
6089
6090
6091
6092
6093
6094
6095
6096
6097
6098
6099
6100
6101
6102
6103
6104
6105
6106
6107
6108
6109
6110
6111
6112
6113
6114
6115
6116
6117
6118
6119
6120
6121
6122
6123
6124
6125
6126
6127
6128
6129
6130
6131
6132
6133
6134
6135
6136
6137
6138
6139
6140
6141
6142
6143
6144
6145
6146
6147
6148
6149
6150
6151
6152
6153
6154
6155
6156
6157
6158
6159
6160
6161
6162
6163
6164
6165
6166
6167
6168
6169
6170
6171
6172
6173
6174
6175
6176
6177
6178
6179
6180
6181
6182
6183
6184
6185
6186
6187
6188
6189
6190
6191
6192
6193
6194
6195
6196
6197
6198
6199
6200
6201
6202
6203
6204
6205
6206
6207
6208
6209
6210
6211
6212
6213
6214
6215
6216
6217
6218
6219
6220
6221
6222
6223
6224
6225
6226
6227
6228
6229
6230
6231
6232
6233
6234
6235
6236
6237
6238
6239
6240
6241
6242
6243
6244
6245
6246
6247
6248
6249
6250
6251
6252
6253
6254
6255
6256
6257
6258
6259
6260
6261
6262
6263
6264
6265
6266
6267
6268
6269
6270
6271
6272
6273
6274
6275
6276
6277
6278
6279
6280
6281
6282
6283
6284
6285
6286
6287
6288
6289
6290
6291
6292
6293
6294
6295
6296
6297
6298
6299
6300
6301
6302
6303
6304
6305
6306
6307
6308
6309
6310
6311
6312
6313
6314
6315
6316
6317
6318
6319
6320
6321
6322
6323
6324
6325
6326
6327
6328
6329
6330
6331
6332
6333
6334
6335
6336
6337
6338
6339
6340
6341
6342
6343
6344
6345
6346
6347
6348
6349
6350
6351
6352
6353
6354
6355
6356
6357
6358
6359
6360
6361
6362
6363
6364
6365
6366
6367
6368
6369
6370
6371
6372
6373
6374
6375
6376
6377
6378
6379
6380
6381
6382
6383
6384
6385
6386
6387
6388
6389
6390
6391
6392
6393
6394
6395
6396
6397
6398
6399
6400
6401
6402
6403
6404
6405
6406
6407
6408
6409
6410
6411
6412
6413
6414
6415
6416
6417
6418
6419
6420
6421
6422
6423
6424
6425
6426
6427
6428
6429
6430
6431
6432
6433
6434
6435
6436
6437
6438
6439
6440
6441
6442
6443
6444
6445
6446
6447
6448
6449
6450
6451
6452
6453
6454
6455
6456
6457
6458
6459
6460
6461
6462
6463
6464
6465
6466
6467
6468
6469
6470
6471
6472
6473
6474
6475
6476
6477
6478
6479
6480
6481
6482
6483
6484
6485
6486
6487
6488
6489
6490
6491
6492
6493
6494
6495
6496
6497
6498
6499
6500
6501
6502
6503
6504
6505
6506
6507
6508
6509
6510
6511
6512
6513
6514
6515
6516
6517
6518
6519
6520
6521
6522
6523
6524
6525
6526
6527
6528
6529
6530
6531
6532
6533
6534
6535
6536
6537
6538
6539
6540
6541
6542
6543
6544
6545
6546
6547
6548
6549
6550
6551
6552
6553
6554
6555
6556
6557
6558
6559
6560
6561
6562
6563
6564
6565
6566
6567
6568
6569
6570
6571
6572
6573
6574
6575
6576
6577
6578
6579
6580
6581
6582
6583
6584
6585
6586
6587
6588
6589
6590
6591
6592
6593
6594
6595
6596
6597
6598
6599
6600
6601
6602
6603
6604
6605
6606
6607
6608
6609
6610
6611
6612
6613
6614
6615
6616
6617
6618
6619
6620
6621
6622
6623
6624
6625
6626
6627
6628
6629
6630
6631
6632
6633
6634
6635
6636
6637
6638
6639
6640
6641
6642
6643
6644
6645
6646
6647
6648
6649
6650
6651
6652
6653
6654
6655
6656
6657
6658
6659
6660
6661
6662
6663
6664
6665
6666
6667
6668
6669
6670
6671
6672
6673
6674
6675
6676
6677
6678
6679
6680
6681
6682
6683
6684
6685
6686
6687
6688
6689
6690
6691
6692
6693
6694
6695
6696
6697
6698
6699
6700
6701
6702
6703
6704
6705
6706
6707
6708
6709
6710
6711
6712
6713
6714
6715
6716
6717
6718
6719
6720
6721
6722
6723
6724
6725
6726
6727
6728
6729
6730
6731
6732
6733
6734
6735
6736
6737
6738
6739
6740
6741
6742
6743
6744
6745
6746
6747
6748
6749
6750
6751
6752
6753
6754
6755
6756
6757
6758
6759
6760
6761
6762
6763
6764
6765
6766
6767
6768
6769
6770
6771
6772
6773
6774
6775
6776
6777
6778
6779
6780
6781
6782
6783
6784
6785
6786
6787
6788
6789
6790
6791
6792
6793
6794
6795
6796
6797
6798
6799
6800
6801
6802
6803
6804
6805
6806
6807
6808
6809
6810
6811
6812
6813
6814
6815
6816
6817
6818
6819
6820
6821
6822
6823
6824
6825
6826
6827
6828
6829
6830
6831
6832
6833
6834
6835
6836
6837
6838
6839
6840
6841
6842
6843
6844
6845
6846
6847
6848
6849
6850
6851
6852
6853
6854
6855
6856
6857
6858
6859
6860
6861
6862
6863
6864
6865
6866
6867
6868
6869
6870
6871
6872
6873
6874
6875
6876
6877
6878
6879
6880
6881
6882
6883
6884
6885
6886
6887
6888
6889
6890
6891
6892
6893
6894
6895
6896
6897
6898
6899
6900
6901
6902
6903
6904
6905
6906
6907
6908
6909
6910
6911
6912
6913
6914
6915
6916
6917
6918
6919
6920
6921
6922
6923
6924
6925
6926
6927
6928
6929
6930
6931
6932
6933
6934
6935
6936
6937
6938
6939
6940
6941
6942
6943
6944
6945
6946
6947
6948
6949
6950
6951
6952
6953
6954
6955
6956
6957
6958
6959
6960
6961
6962
6963
6964
6965
6966
6967
6968
6969
6970
6971
6972
6973
6974
6975
6976
6977
6978
6979
6980
6981
6982
6983
6984
6985
6986
6987
6988
6989
6990
6991
6992
6993
6994
6995
6996
6997
6998
6999
7000
7001
7002
7003
7004
7005
7006
7007
7008
7009
7010
7011
7012
7013
7014
7015
7016
7017
7018
7019
7020
7021
7022
7023
7024
7025
7026
7027
7028
7029
7030
7031
7032
7033
7034
7035
7036
7037
7038
7039
7040
7041
7042
7043
7044
7045
7046
7047
7048
7049
7050
7051
7052
7053
7054
7055
7056
7057
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
7068
7069
7070
7071
7072
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
7083
7084
7085
7086
7087
7088
7089
7090
7091
7092
7093
7094
7095
7096
7097
7098
7099
7100
7101
7102
7103
7104
7105
7106
7107
7108
7109
7110
7111
7112
7113
7114
7115
7116
7117
7118
7119
7120
7121
7122
7123
7124
7125
7126
7127
7128
7129
7130
7131
7132
7133
7134
7135
7136
7137
7138
7139
7140
7141
7142
7143
7144
7145
7146
7147
7148
7149
7150
7151
7152
7153
7154
7155
7156
7157
7158
7159
7160
7161
7162
7163
7164
7165
7166
7167
7168
7169
7170
7171
7172
7173
7174
7175
7176
7177
7178
7179
7180
7181
7182
7183
7184
7185
7186
7187
7188
7189
7190
7191
7192
7193
7194
7195
7196
7197
7198
7199
7200
7201
7202
7203
7204
7205
7206
7207
7208
7209
7210
7211
7212
7213
7214
7215
7216
7217
7218
7219
7220
7221
7222
7223
7224
7225
7226
7227
7228
7229
7230
7231
7232
7233
7234
7235
7236
7237
7238
7239
7240
7241
7242
7243
7244
7245
7246
7247
7248
7249
7250
7251
7252
7253
7254
7255
7256
7257
7258
7259
7260
7261
7262
7263
7264
7265
7266
7267
7268
7269
7270
7271
7272
7273
7274
7275
7276
7277
7278
7279
7280
7281
7282
7283
7284
7285
7286
7287
7288
7289
7290
7291
7292
7293
7294
7295
7296
7297
7298
7299
7300
7301
7302
7303
7304
7305
7306
7307
7308
7309
7310
7311
7312
7313
7314
7315
7316
7317
7318
7319
7320
7321
7322
7323
7324
7325
7326
7327
7328
7329
7330
7331
7332
7333
7334
7335
7336
7337
7338
7339
7340
7341
7342
7343
7344
7345
7346
7347
7348
7349
7350
7351
7352
7353
7354
7355
7356
7357
7358
7359
7360
7361
7362
7363
7364
7365
7366
7367
7368
7369
7370
7371
7372
7373
7374
7375
7376
7377
7378
7379
7380
7381
7382
7383
7384
7385
7386
7387
7388
7389
7390
7391
7392
7393
7394
7395
7396
7397
7398
7399
7400
7401
7402
7403
7404
7405
7406
7407
7408
7409
7410
7411
7412
7413
7414
7415
7416
7417
7418
7419
7420
7421
7422
7423
7424
7425
7426
7427
7428
7429
7430
7431
7432
7433
7434
7435
7436
7437
7438
7439
7440
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
7451
7452
7453
7454
7455
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
7466
7467
7468
7469
7470
7471
7472
7473
7474
7475
7476
7477
7478
7479
7480
7481
7482
7483
7484
7485
7486
7487
7488
7489
7490
7491
7492
7493
7494
7495
7496
7497
7498
7499
7500
7501
7502
7503
7504
7505
7506
7507
7508
7509
7510
7511
7512
7513
7514
7515
7516
7517
7518
7519
7520
7521
7522
7523
7524
7525
7526
7527
7528
7529
7530
7531
7532
7533
7534
7535
7536
7537
7538
7539
7540
7541
7542
7543
7544
7545
7546
7547
7548
7549
7550
7551
7552
7553
7554
7555
7556
7557
7558
7559
7560
7561
7562
7563
7564
7565
7566
7567
7568
7569
7570
7571
7572
7573
7574
7575
7576
7577
7578
7579
7580
7581
7582
7583
7584
7585
7586
7587
7588
7589
7590
7591
7592
7593
7594
7595
7596
7597
7598
7599
7600
7601
7602
7603
7604
7605
7606
7607
7608
7609
7610
7611
7612
7613
7614
7615
7616
7617
7618
7619
7620
7621
7622
7623
7624
7625
7626
7627
7628
7629
7630
7631
7632
7633
7634
7635
7636
7637
7638
7639
7640
7641
7642
7643
7644
7645
7646
7647
7648
7649
7650
7651
7652
7653
7654
7655
7656
7657
7658
7659
7660
7661
7662
7663
7664
7665
7666
7667
7668
7669
7670
7671
7672
7673
7674
7675
7676
7677
7678
7679
7680
7681
7682
7683
7684
7685
7686
7687
7688
7689
7690
7691
7692
7693
7694
7695
7696
7697
7698
7699
7700
7701
7702
7703
7704
7705
7706
7707
7708
7709
7710
7711
7712
7713
7714
7715
7716
7717
7718
7719
7720
7721
7722
7723
7724
7725
7726
7727
7728
7729
7730
7731
7732
7733
7734
7735
7736
7737
7738
7739
7740
7741
7742
7743
7744
7745
7746
7747
7748
7749
7750
7751
7752
7753
7754
7755
7756
7757
7758
7759
7760
7761
7762
7763
7764
7765
7766
7767
7768
7769
7770
7771
7772
7773
7774
7775
7776
7777
7778
7779
7780
7781
7782
7783
7784
7785
7786
7787
7788
7789
7790
7791
7792
7793
7794
7795
7796
7797
7798
7799
7800
7801
7802
7803
7804
7805
7806
7807
7808
7809
7810
7811
7812
7813
7814
7815
7816
7817
7818
7819
7820
7821
7822
7823
7824
7825
7826
7827
7828
7829
7830
7831
7832
7833
7834
7835
7836
7837
7838
7839
7840
7841
7842
7843
7844
7845
7846
7847
7848

           Linux Gazette... making Linux just a little more fun!
                                      
         Copyright  1996-98 Specialized Systems Consultants, Inc.
     _________________________________________________________________
   
                       Welcome to Linux Gazette! (tm)
     _________________________________________________________________
   
                                 Published by:
                                       
                               Linux Journal
     _________________________________________________________________
   
                                 Sponsored by:
                                       
                                   InfoMagic
                                       
                                   S.u.S.E.
                                       
                                    Red Hat
                                       
   Our sponsors make financial contributions toward the costs of
   publishing Linux Gazette. If you would like to become a sponsor of LG,
   e-mail us at sponsor@ssc.com.
     _________________________________________________________________
   
                             Table of Contents
                          February 1998 Issue #25
     _________________________________________________________________
   
     * The Front Page
     * The MailBag
          + Help Wanted
          + General Mail
     * More 2 Cent Tips
          + Linux - 2 Cents about vim for pico users
          + My 1/50th of a Dollar
          + sound problems
          + Filtering output of binary files
          + Easter Eggs in Netscape
          + RE: Perl and HTML
          + Update locate
          + Doing spaces in file names
          + Mailing binary files to Microsoft clients
          + Linux and Routing
          + Linux and Routing 2
          + Netscape's Abouts
          + Netscape on the Desktop
          + Re: Printing Problems
          + Re: Using a 386 Computer
     * News Bytes
          + News in General
          + Software Announcements
     * The Answer Guy, by James T. Dennis
          + Removing LILO, Reinstalling MS-DOS
          + Running as root on Standalone Systems -- DON'T
          + More on Netscape Mail Crashes
     * Book Review: A Practical Guide to Linux, by Bernard Doyle
     * Bourne/Bash: Shell Programming Introduction, by Rick Dearman
     * Clueless at the Prompt, by Mike List
     * Confessions of a Former VMS Junkie, by Russell C. Pavlicek
     * EMACSulation, by Eric Marsden
     * Gathering Usage Stats, by Randy Appleton
     * The Graphics Muse, by Michael J. Hammel
     * Hylafax, by Dani Pardo
     * Linux Compared to Other Operating Systems, by Elof Soerensen
     * Linux Ports, by Ross Linder
     * Linux and Windows95, by Leonardo Lopes
     * New Release Reviews, by Larry Ayers
          + GCC News
          + Gmemusage: A Distinctive Memory Monitor
          + Xephem
     * A Simple Internet Dialer for Linux, by Martin Vermeer
     * Secure Public Access Internet Workstations, by Steven Singer
     * The Software World--It's a Changin', by Phil Hughes
     * The Back Page
          + About This Month's Authors
          + Not Linux
       
   The Answer Guy
   The Weekend Mechanic will return.
     _________________________________________________________________
   
   TWDT 1 (text)
   TWDT2 (HTML)
   are files containing the entire issue: one in text format, one in
   HTML. They are provided strictly as a way to save the contents as one
   file for later printing in the format of your choice; there is no
   guarantee of working links in the HTML version.
     _________________________________________________________________
   
   Got any great ideas for improvements! Send your comments, criticisms,
   suggestions and ideas.
     _________________________________________________________________
   
   This page written and maintained by the Editor of Linux Gazette,
   gazette@ssc.com
   
    "Linux Gazette...making Linux just a little more fun!"
     _________________________________________________________________
   
                                The Mailbag!
                                      
                    Write the Gazette at gazette@ssc.com
                                      
                                 Contents:
                                      
     * Help Wanted
     * General Mail
     _________________________________________________________________
   
                                Help Wanted
     _________________________________________________________________
   
   Date: Tue, 06 Jan 1998 17:09:31 +1000
   From: Peter Scott webguru@planet-sex.com
   Subject: Help - Adding third hard drive
   
   I've been using Slackware Linux 2.0.29 for quite some time. I've
   managed with 2 drives with partitions for Win95 and Linux, but now I
   need to add another drive. It is recognised in the BIOS and can be
   found in Windoze, but I get no joy from Linux. I expected to be able
   to mount the drive straight away. Do I need to do some insnod or
   mke2fs or something.

    # mount /dev/hdc1 /mnt
    mount: the kernel does not recognize /dev/hdc1 as a block device
           (may# fdisk /dev/hdc

    # fdisk /dev/hdc
    Unable to open /dev/hdc

   I've got a fealing that I need to reconfigure Lilo or something? I
   know that I've forgotten something obvious, but I've wasted hours
   without any joy.
   
   thanx,
   pete
     _________________________________________________________________
   
   Date: Tue, 06 Jan 1998 19:55:08 +0000
   From: George Russell george.russell@clara.net
   Subject: Installing StarOffice 3.1 on Redhat 4.2
   
   I'm having difficulties installing StarOffice onto my system. I've
   installed the rpms for static binaries, common files, english demos
   and english docs. I've run the setup script and done a user install,
   after updating libc and ld.so, and would like to now run the package.
   It says to install two daemons, svdaemon and svportmap . These both
   need something called rpc and the portmap daemon, which I can find no
   reference to on my system. How can I install these so that StarOffice
   will run. All help gratefully recieved.
   --
   George Richard Russell
     _________________________________________________________________
   
   Date: Sat, 10 Jan 1998 05:55:26 -0600
   From: ReXsOn RuLeZ abernal@theonramp.net
   Subject: Question....
   
   Hello there... sorry to bother with probably one of the stupidist
   questions in the world, but I want to install Linux on my computer;
   the problem is that I share a computer with my family and of course
   they don't have a clue of what I do so they don't care, they just want
   to be able to use office to do their work. I've looked around various
   Linux sites trying to find an answer but I've been unsuccesful. My
   question is this: As I told you I have a windows95 box and all the
   documents that
   
   Are outthere focus on installing linux in a DOS environment which in
   my case and a lot of people it's history. I have a 3 gig hardrive that
   I think is partitioned already in 2 because I have a c: and d: I'm not
   sure if they're separate hardrives or one is partitioned. What I would
   like to know is what should I do here. I'm not sure if my second drive
   which is 1 gig is already formated for windows which I think it is
   because it has a recyble bin. I don't know what to do because I'm
   afraid that if I delete or erase the partition the whole thing will
   become one hardrive and I will have to erase everything to partition
   that one hardrive. I was kind of hoping there was a way or partitionin
   my second hardrive (d:) and leave a part for windows and another for
   Linux.
   
   As I told you earlier I'm sorry to make this kind of questions but if
   I damage something of this computer my dad would prive me of even
   looking at it, and I don't want that to happen. I would really
   aprecciate your help since I'm really eagered to use Linux.
   
   Thanx in advance for your help.
   
   Rexson
     _________________________________________________________________
   
   Date: Sat, 17 Jan 1998 20:39:14 -0400
   From: Frank Nazario webmaster@prplaza.net
   Subject: HI...
   
   I've just finished browsing your Gazzettte and it is very cool...as a
   web administrator at http://www.prplaza.net I was fedup with the
   performance and slowness of an NT enviroment and decided kind of
   reluctant to migrate to Linux (right now i'm a green thumb at it)...
   But and a big BUT after seen a single processor pentium pro 200 server
   running linux redhat 5.0 and Apache Webserver blow the doors of a dual
   pentium pro 200 running on NT and IIS3.0...i was sold in the
   spot....never to touch Microsoft NT again ... and feeling good about
   it.
   
   My problem is this one ... I've gone bananas in trying to find a
   document that explains how to install, in a step by step fashion, the
   Apache SSL "extensions" to one of my Apache WWW Webservers (the
   performance increase is awesome) can you or anyone that reads this
   help...
   
   thanks beforehand for you response....
   
   Frank Nazario San Juan, Puerto Rico
     _________________________________________________________________
   
   Date: Sun, 18 Jan 1998 11:36:50 -0500
   From: Michael Vore mvore@digex.net
   Subject: Problems with CD-ROM
   
   Admittedly I'm not sure where the problem lies, When using
   NT-4/Netscape Communicator-4 to view the cdrom all links look like
   "file:///El/lj/" Which of course will not be found. I have looked at
   the source to try to find why the double '//' and the '/El' come from.
   Any ideas? (and any work arounds??)
   
   At the moment I don't have X running on my Linux machine - it's a new
   install of RedHat and during the upgrade I forgot to same the XConfig
   files.
   
   mike
     _________________________________________________________________
   
   Date: Mon, 19 Jan 1998 09:52:28 -0500 (EST)
   From: Michael Stutz stutz@dsl.org
   Subject: Help Wanted: SVGALIB Screenshots?
   
   Is there any way to make a screenshot of a graphical program that runs
   on the console (_not_ in X)?
     _________________________________________________________________
   
   Date: 21 Jan 98 11:28:04 -0500
   From: Jonathan Smith SMITHJL@detroitedison.com
   Subject: netcfg
   
   I am using X to connect to my ISP via the netcfg command. I have it
   starting up at boot time. This works great, but I was wondering where
   the chat script and pppd command are hiding for the ppp interface that
   you can create via netcfg.
   
   I was also wondering if there was a way to prevent my ISP from
   dropping me after a given time of activity. I am using a cron job to
   ping to my isp, but that does not seem to prevent this from happening.
   Should I try pinging to a server other than my ISP?
   
   Thanks, Jonathan Smith.
     _________________________________________________________________
   
   Date: Thu, 22 Jan 1998 02:38:11 -0800 (PST)
   From: Jaume Vicent jvicent@yahoo.com
   Subject: Sound Card MED3931
   
   I'm a new Linux user (kernel 2.0.29). My sound card is a MED3931, with
   a chip OPTi 82c931.
   
   As it is a PnP card, I use the isapnptools-1.9 package, loading the
   sound support as a module. I've tried configure it as a MAD16 or MSS
   (Microsoft Sound System) but it hasn't worked in any way.
   
   I don't know if the problem is with the IRQ/DMA/IO settings (I use the
   same ones as with Windows 95) that I set in the /etc/isapnp.conf file,
   or it is that the sound driver (OSS/Free) just doesn't support this
   card.
   
   Can you help? Thank you.
     _________________________________________________________________
   
   Date: Thu, 22 Jan 1998 22:51:09 +0200
   From: Asaf Wiener wasaf@writeme.com
   Subject: from were can i download (for free) LINUX?
   
   I have an inter pentium, and I would like to install LINUX in my
   computer. But, I don't know from were can i download the installation
   files (for free), I heard that LINUX is a free softwere, but i don't
   find a site that i can download for free LINUX. Please help me to find
   such a site (and also some install instractions).
   
   Thank you,
   Asaf wiener
   
     Look on the Linux Resources page to find pointers to everything you
     need, http://www.linuxresources.com/ --Editor
     _________________________________________________________________
   
   Date: Fri, 23 Jan 1998 14:59:00 +1100
   From: Peter Lee peterl@localgov.wacher.com.au
   Subject: POP3d Problem
   
   I am having problem connecting to the POP3 Server in Linux. This
   problem only arise when a new email arrives or there are mails in my
   mailbox If I delete all my mails I can connect to the POP3 Server.
   Error message I get is:
   
   ERR - being read already /usr/spool/mail/
   
   I have removed the account and recreated it again. Still problem
   occurs. And I know I am the only one logged on. The only way I can
   read my mails is manually telneting to the Linux and use either pine
   or mail from the unix command
   
   Any Suggestions ?
   
   PETER LEE
     _________________________________________________________________
   
   Date: Fri, 23 Jan 1998 13:02:25 -0003
   From: RAFAGUI@if.ufrgs.br
   Subject: Printing postcript ...
   
   I really want to print some using postscript form but I can't ... So,
   I have read a lot of docs and unfortunately when I try to print some I
   just got the postscript language.
   
   I tried configure the 'printcap' and so on but. My printer is a CANON
   4200 Bj and I am running Slackware 96 Linux Version.
   
   Oh: I just gave a look at the RedHat 5.0 comments and seems it make
   easier. I am thinking about purchase it.
   
   Thanks a lot. I would appreciate a reply.
   
   Regards,
   
   Rafael.
     _________________________________________________________________
   
   Date: Sat, 24 Jan 1998 08:09:51 -0500 (EST)
   From: Casimer P. Zakrzewski zak@acadia.net
   Subject: IBM 8514 monitor
   
   Hi. I'm new to Linux, and my problem is installing my monitor, an IBM
   8514, for use with X-Window. I use an S3 Virge 86C325 accelerator
   card.
   
   After installing Red Hat 4.2, the monitor works fine for command line,
   but when I try using it for X-Window, the screen shrivels up to
   something less than a 3x5 recipe card! I've tried reconfiguring
   different combinations of color depths and screen resolutions, and
   have come up with everything from a blank screen to 'your worst
   nightmare'.
   
   I'm stumped. I've tried the different FAQ sites, but can't find one
   that can give me a hint of how to configure this monitor for use with
   X-Window. I'd appreciate any help anyone can give me. I had to resort
   to installing Win95 and IE (which work for this monitor/card) just to
   send this out. Thanks in advance for any help I can get.
   
   Zak
     _________________________________________________________________
   
   Date: Sun, 25 Jan 1998 11:06:17 -0800
   From: Apple Annie annel@cdsnet.net
   Subject: Re: Remote address on Chat sites
   
   I am not a very literate person on the internet, so many of the
   vernaculars used are over my head. However, am having a problem of
   people "killing" me when they wish to , on Java Chat room. I would
   like to be able to eliminate my Remote number coming up with my user
   name . Is there a simple way of doing this? I do not desire these
   people to locate my server & other information. Thanks for your
   response, if you can give me help. If not, then thank you anyhow.
   
   Sincerely yours,
   
   Anne L
     _________________________________________________________________
   
   Date: 27 Jan 98 13:18:56
   From: dennis.j.smith dennis.j.smith@ArthurAndersen.com
   Subject: Linux and VAX 3400 and 3300
   
   I have just purchased a MicroVAX 3400 and 3300. I would like to put
   Linux on these two systems. Can you provide any help in this aspect.
   
   Dennis
     _________________________________________________________________
   
   Date: Wed, 28 Jan 98 15:54:55 MST
   From: Antony Ware aware@acs.ucalgary.ca
   Subject: Linux and Children
   
   I've been hunting around for linux software for toddlers. My eldest
   (3) has had fun with xpaint, and he likes to "type", but there's a lot
   more going on at his level on my DOS partition. (:-(
   
   So far, my searches in the linux world have turned up...nothing. Does
   anyone know of anything out there?
   
   Cheers,
   
   Tony Ware
     _________________________________________________________________
   
                                General Mail
     _________________________________________________________________
   
   Date: Mon, 5 Jan 1998 12:14:09 PST
   From: Marty Leisner leisner@sdsp.mc.xerox.com
   Subject: I don't like long articles
   
   Glen Fowler's article comparing NT and linux processes is too long for
   the gazette (IMHO) and didn't print out good from netscape...
   
   HTML is not the best media for everything, maybe the gazette should
   have an abstract and a URL for a postscript or tex master.
   
   marty
     _________________________________________________________________
   
   Date: Tue, 06 Jan 1998 11:07:06 +0100
   From: Trond Eivind Glomsrd teg@pvv.ntnu.no
   Subject: Linux and routing
   
   In the January issue, you ask for readers to write an article on how
   to connect a LAN via just 1 IP address...
   
   That is rather unnecesarry - there is a mini-HOWTO on it, called "IP
   Masquerade mini-HOWTO". Available from your favorite LDP mirror.
   
   Trond Eivind Glomsrd
     _________________________________________________________________
   
   Date: Tue, 13 Jan 1998 22:26:57 -0600
   From: chris rennert lavithan@execpc.com
   Subject: Rookie
   
   Hello I am a newbie to Linux and I am very excited that I stumbled
   across the Linux Gazette.. I have been wanting to put up a home LAN
   with 2 pc's for some time ... and the article on SAMBA has put me on
   the right track. I am a computer science student here in Wisconsin and
   I love using linux. I will keep reading .. I just hope that you keep
   printing.. Thanks again and I hope I can contribute in the future to
   this great Mag.
   
   Chris Rennert
     _________________________________________________________________
   
   Date: Sat, 17 Jan 1998 01:32:06 -0700
   From: Sean Horan sean@olam.ed.asu.edu
   Subject: Server uptime
   
   I'm sending this maybe as news, perhaps Linux stability and advocacy.
   
   I heard that the record for keeping up a Linux server up continuously
   without reboot is six months. Here's the output from executing 'w' on
   our Linux 1.2.8 system.

1:48am  up 274 days, 17:05,  1 user,  load average: 1.09, 1.02, 1.00
User     tty      from             login@  idle   JCPU   PCPU  what
sean     ttyp1    sss2-01.inre.as  1:46am                      w

   274 days, 24 hours a day. Never restarted. How common is this?
   
   Let us know
   --Sean
     _________________________________________________________________
   
   Date: Sun, 25 Jan 1998 15:04:35 -0800
   From: Sean Russell ser@javalab.uoregon.edu
   Subject: Linux security
   
   I'm not intending to kick of a debate of the merits of PAM, but I have
   a couple of comments and a question.
   
   The question is, has anybody, commercial or freeware, started coding
   an MVS-like security system for Linux? Specifically, I'm interested in
   the fine granularity of access controls, the ability to deal with more
   than just file accesses, user configurable ACLs, and most importantly,
   security at the kernel level. One thing I find most distasteful about
   PAM is the fact that applications have to be PAM aware to make use of
   PAM's abilities. MVS security, on the other hand, is soft-linked into
   the IO layer of the kernel, and /all/ applications use that security
   model without knowing anything about it.
   
   Anyone who has any comments on this, information, or leads, please
   email me.
   
   Thanks!
   
   --- SER
     _________________________________________________________________
   
             Published in Linux Gazette Issue 25, February 1998
     _________________________________________________________________
   
   [ TABLE OF CONTENTS ] [ FRONT PAGE ] Next 
   
      This page written and maintained by the Editor of Linux Gazette,
      gazette@ssc.com
      Copyright  1998 Specialized Systems Consultants, Inc.
      
    "Linux Gazette...making Linux just a little more fun!"
     _________________________________________________________________
   
                               More 2 Tips!
                                      
               Send Linux Tips and Tricks to gazette@ssc.com 
     _________________________________________________________________
   
  Contents:
  
     * Linux - 2 Cents about vim for pico users
     * My 1/50th of a Dollar
     * sound problems
     * Filtering output of binary files
     * Easter Eggs in Netscape
     * RE: Perl and HTML
     * Update locate
     * Doing spaces in file names
     * Mailing binary files to Microsoft clients
     * Linux and Routing
     * Linux and Routing 2
     * Netscape's Abouts
     * Netscape on the Desktop
     * Re: Printing Problems
     * Re: Using a 386 Computer
     _________________________________________________________________
   
  Linux - 2 Cents about vim for pico users
  
   Date: Mon, 5 Jan 1998 23:07:20 +0100
   From: Sven Guckes guckes@math.fu-berlin.de
   
   I just read the "2 cent tips" again and I thought you might enjoy this
   tip:
   
   Several people enjoy the editor "pico" but do not feel comfortable
   with an editor like "vim" for several reasons - one of these being
   that it is so easy to do reformat the current paragraph with ^J
   (control-j) within pico while it is so "difficult" within Vim. Well,
   all it takes is two mappings for Vim:

        nmap <C-J> vipgq
        nmap <C-J>    gq

   Put these mappings into your setup file (on Unix and esp Linux this is
   ~/.vimrc) and you can use ^J to reformat the current paragraph or the
   currently highlighted text (use 'V' and some movement commands to do
   that, for example).
   
   More tips can be obtained from these Pages:
        http://www.vim.org/             Vim Home Page
        http://www.vim.org/faq/         Vim FAQ
        http://www.vim.org/answ.html    Vim Answers Page
                                        (for everything not yet in the VIM FAQ)
        http://www.vim.org/rc           Sven's Huge Setup File with comments

   And for those people who use "some vi" but never got the hang of it -
   here is a page about "why" you would want to use a vi clone such as
   Vim:

        http://www.vim.org/why.html

   Enjoy!
   
   Sven
     _________________________________________________________________
   
  My 1/50th of a Dollar
  
   Date: Wed, 07 Jan 1998 01:27:09 +0000
   From: Michael Katz-Hyman mkatshym@erols.com
   
   Here is a small shell script I wrote to blink the scroll lock on my
   keyboard when new mail arrived.
   
   --------------------------------------------------------------
#!/bin/bash
#
# Keyboard blinky thingy when you have new mail, sleeps 5 minutes if you
don't
#
# Michael Katz-Hyman (mkatshym@erols.com) running Linux 2.0.33 Red Hat
4.0

Mail_File = "/var/spool/mail/mkatshym"

# The static file is used to make the script a daemon (I just test to
see if  /bin/bash is present :- )

Static_File="/bin/bash"

LED_SET_COMMAND_ON = "/usr/bin/setleds +scroll"

LED_SET_COMMAND_OFF = "/usr/bin/setleds -scroll"

Sleep_Command = "/bin/sleep 2m"


# O.k. lets get started

while [ -e $Static_File ]; do
        while [ -s  $Mail_File ]; do

                $LED_SET_COMMAND_ON
                $LED_SET_COMMAND_OFF
        done

        if [ ! -sMail_FIle ]; then

                  /bin/sleep 5m
        fi
done

   ------------------------------------------------------------------
   
   Michael Katz-Hyman
     _________________________________________________________________
   
  sound problems
  
   Date: Wed, 7 Jan 1998 09:48:10 -0600 (CST)
   From: Mike Hammel mhammel@stassw10

> Have installed RedHat 5.0 and configured the sound card using sndconfig.
> All went well and I heard the demo sound bite of Linus. However, I
> have never heard another sound since. When browsing web sites with sound,
> no audio is played. Anyone have any ideas?

   First, cat an audio file to the audio device: cat file > /dev/audio.
   If you get sound out then the device is fine. The problem is probably
   that you haven't configured your browser to play the audio. With
   Netscape you would use the Preferences->Navigator->Applications
   option. You'll need to configure the various audio types to be played
   using whatever tool you choose (I don't play much audio, so don't have
   anything configured in my browser to do so). The cat command will work
   with .au files, and maybe .wav (I think), but possibly not with
   others. You might want to look at the Linux Application and Utilities
   Page or the Linux Midi and Sound Page for hints on getting
   applications for playing sound files. Both of these have links on the
   Software Resources page at the Linux Journal:
   http://www.linuxresources.com/apps.html.
   
   Hope this helps a little.
   
   Michael J. Hammel
     _________________________________________________________________
   
  Filtering output of binary files
  
   Date: Wed, 7 Jan 1998 14:56:05 -0500
   From: Sylvain Falardeau sfalardeau@clic.net
   
   When you do a cat/grep/etc. of binary files on a tty, the terminal may
   become unusable because of some control character.
   
   Guido Socher (eedgus@aken104.eed.ericsson.se) suggests a
   
   sed -e 's/[^ -~][^ -~]*/ /g'
   
   to filter unprintable characters. You can simply use a
   
   cat -v
   
   and all the control characters are escaped to be printable. It's very
   useful when you are "cating" files and don't know if they contains
   control characters.
     _________________________________________________________________
   
  Easter Eggs in Netscape
  
   Date: Thu, 8 Jan 1998 11:53:51 +0000 (GMT)
   From: Caolan McNamara caolan@skynet.csn.ul.ie

* From: Ivan Griffin ivan.griffin@ul.ie
*
* These special URLs do interesting things in Netscape Navigator and Communicat
or.
*
* about:cache gives details on your cache
* about:global gives details about global history
* about:memory-cache
* about:image-cache
* about:document
* about:hype
* about:plugins
* about:editfilenew
*
* view-source:URL opens source window of the URL
*
* Ctrl-Alt-F take you to an interesting site :-)

   At least some of the netscape developers have an about for themselves,
   e.g about:kahern.
   
   C.
     _________________________________________________________________
   
  RE: Perl and HTML
  
   Date: Thu, 08 Jan 1998 16:58:44 +0000
   From: Carl Mark Windsor mbdtscw@cerberus.mcc.ac.uk
   
   In reply to Gabriele Giansante (gvgsoft@madnet.it), whose return mail
   address does not seem to work.
   
   --------------------------------------------------------------
   Gabriele,
   
   The #!/usr/local/bin/perl line is what is used to indicate that this
   is a perl script, but netscape is not clever enough to know this, it
   has to be told.
   
   Go to Options / General Preferences / Helpers and edit (if it exists)
   or create (if it doesn't) the following configuration

Description:  Perl Script
Type:         application/perl
Suffix:       pl

   Tick the Application box and put the path
Application:  /usr/sbin/perl
Sorry if you have heard this all before!

Carl


  __________________________________________________________________________





  Update locate


Date: Sat, 10 Jan 1998 19:16:31 +0000

From: Joaquim Baptista px@helios.si.fct.unl.pt

Both Redhat and Slackware (not sure about Debian) install the package
updatedb. This package has two programs:
- "updatedb" scans the filesystem and generates a database of existing files.
  This is run every night as root.
- "locate" is run by users to quickly locate files on the filesystem,
  using the database generated by updatedb.

My problem is that "updatedb" runs at 4:40 in the morning, and my machine
is rarely running at 4:40.  Thus the database is never updated and "locate"
never finds any recent file.

The solution is not very simple: updating the database hits the disk hard
and takes some time; it is hardly a task to be performed every hour.

My solution is to run a script every hour that updates the database only if
it is more than 24 hours old.  I (ab)used find to do the task.

Here is the script "run-updatedb":

#!/bin/sh
/usr/bin/find /var/spool/locate/locatedb -mtime +1 -exec \
    /usr/bin/updatedb \
    --prunepaths='/tmp /usr/tmp /var/tmp /mnt /cdrom /floppy /var/spool' \;

I also had to change the crontab for root: I commented the old line that
runs updatedb at 4:40, and added a line that runs my script every hour:

0 * * * *   /usr/local/sbin/run-updatedb 1> /dev/null 2> /dev/null

One final note: I believe that both Redhat and Debian have
"super-crontabs." That means that you must fish around in /etc
(/etc/cron?) for extra crontab files (long live Slackware!).

Best regards,

Joaquim Baptista, alias pxQuim


  __________________________________________________________________________





  Doing spaces in file names


Date: Tue, 13 Jan 1998 18:16:48 -0800 (PST)

From: Mark Lundeberg ae885@pgfn.bc.ca

If you think Win95/NT filenames are better than Linux ones, think again.
In bash, (this may work in csh, but I never use it) use quotes to enclose
the filename in the parameters of a program:

echo "test" > "spaced name"

and do an ls, and you see a space in the middle of the filename!
This can be used for confusing people, by going:

echo "Hi" > "test "

(notice the space at the end of "test ").

Then, someone tries to open the file "test" as it looks from ls, but all it
does is open a new file.

PS: The ext2 filesystem allows names of up to 255 chars long, just like
Loseows 95.

Go Linux!


  __________________________________________________________________________





  Mailing binary files to Microsoft clients


Date: Fri, 16 Jan 1998 12:37:22 +0000 (GMT)

From: Ivan Griffin ivan.griffin@ul.ie

Mailing binary files to Microsoft clients...



Quite often I receive a mail with an attachment in that weird Microsoft
format which is not quite MIME.  It's easy for a Unix client to decode such
attachments -- save the message as a file, and run uudecode or the
excellent freeware uudeview on it.

However, sending a mail message to such a Microsoft mail user is a little
different -- you cannot send them a standard MIME message (unless they are
using Exchange I believe).  I have found the following script useful in
such situations.

Say, for example, I wanted to send a file foo.gif to user mike.  I would
run my script as follows:

msmail_encode foo.gif > mail_message



Then I would read the mail message into the body of the message I wanted
to send.  This script could easily be improved to include automatic
mailing, and editing of the mail message proper.

#!/bin/sh
echo "[[ $1 : 2628 in $1 ]]"
echo ""
echo " Microsoft document attached. "
echo ""
echo " Regards, "
echo " Ivan."
echo ""
echo "The following binary file has been uuencoded to ensure successful"
echo "transmission.  Use UUDECODE to extract."
echo
cat $1 | uuencode $1



By the way, I have no idea what the 2628 above refers to.  It is
a number generated somehow by Microsoft mail clients, but they don't seem
to need it, so the 2628 is a value I received once in a mail message.

Regards,

Ivan.


  __________________________________________________________________________





  Linux and Routing


Date: Sat, 17 Jan 1998 11:02:43 -0800

From: James C. Carr jccarr@nwlink.com

        I am not sure if you have already received a reply regarding your
question on routing a LAN to the 'net, so I thought I'd go ahead and
give it a shot.  The CC to Linux Gazette is just in case no one else
has sent in a more elaborate reply. ;)  Also, this is something that was
mentioned back in Linux Journal number 43 ( November 1997 ), so most of
this stems from that particular article, "IP Masquerading Code
Follow-UP".  To avoid re-hashing someone else's wonderful article, I'll
just skim over what I use here at my own home.

======================================================================

Linux and Routing with ipfwadm

======================================================================

        Getting Linux to route information between a LAN and the 'net will
require you to re-compile the kernel with IP Masquerading support.  Of
course, one could also use firewalls and disable the routing, but I
don't have experience with that just yet.  If your kernel version is <
2.0.30, you'll need to enable the "Code Maturity Level" option at
re-compilation -- this gives you access to the other Network Options in
the kernel, such as IP Masquerading support.

        After installing the new kernel,  obtain and install the ipfwadm
program; this usually comes installed on a base Debian 1.3.1 system, and
is easily obtainable for Red Hat.  Executing ipfwadm from my end
includes the following commands:

        /sbin/ipfwadm -F -p deny

This portion breaks down as follows:

 -F -- Notify ipfwadm that
you're modifying the IP forwarding rules.

 -p -- Tell ipfwadm that
you want to deny the forwarding of incoming packets.

  I've
experienced certain web pages that will not open with this option
set; it's probably some Microsoftian plot, you know. ;)

        /sbin/ipfwadm -F -a m -S 192.168.0.0/24 -D 0.0.0.0/0

 -F is the same as above.

 -a -- Append the following rule to the
list, in this case, we're (m) masquerading the following rule.

 -S
-- We're going to masquerade the computers in the 192.168.0.*
address range. Since this is a "local" set of IP numbers, it'll
work with all computers on the LAN with these IP addresses.

 -D --
The forwarding destination will be 0.0.0.0, the equivalent of the
gateway address on a PPP defaultroute.

        /sbin/ipfwadm -F -l -n

Let's make sure this thing is up and running.

 -l -- List all IP                      #
forwarding rules;

 -n -- convert the information to numeric format.

Of course, you'll need to have assigned your computers with IP
addresses within the 192.168.0.* range to use the exact commands above.
On my own setup, the primary computer gets 192.168.0.1, and the others
fall in succession.  Be sure to have all the computers that are being
masqueraded set their gateway address to the primary, e.g.
secondary.my.com (192.168.0.2) uses primary.my.com (192.168.0.1) as
its gateway to the 'net.

        For a far more in-depth article regarding this type of set-up, I do
suggest reading Chris Kostick's article "IP Masquerading Code Follow-up"
in the November 1997 issue of Linux Journal.  Not only does it cover the
basics, but the author also explains a few more subtle aspects to
ipfwadm.  Besides, without the help of this article, I wouldn't even
know the small amount about ipfwadm that I do. :)

======================================================================

I hope this helped at least a little,

-- James


  __________________________________________________________________________





  Linux and Routing 2


Date: Tue, 6 Jan 1998 13:25:57 -0500 (EST)

From: Paul Lussier, plussier@LanCity.COM

> I plan on getting a cable modem soon, so the bandwidth would be pretty

> high, so that is why I have decided to try to make this connection

> provide for my whole house via a LAN connection in my home. What I

> have read is that you could use the private IPs, meaning the 10.x.x.x

> or so, 192.168.x.x and some others for the IP of the LAN and have

> these connect to some box (the LINUX box?) that would provide its

> connection to the internet to the inside LAN connected to the box. Is

> the problem that you would have to route the assigned address to the

> private IPs for the LAN use. I have also read that this would slow

> down the connection a bit or something, but that is a price I am

> willing to pay. So, the summary of the question is how would I be able

> to connect many computers to the internet via just 1 assigned IP

> address? I would like to be able to do it using my LINUX box connected

> to the internet via cable modem, and to my LAN via an Ethernet

> link. Any help is much appreciated, thanks.


This caught my attention, especially since I'm the Unix admin for
Baynetworks Broadband Technology Division (formerly LANcity) and we
pretty much invented this technology, along with being the leader in
the Cable modem industry :) Now that I've got the plug in for company
I'll get down to your problem :)

I first must admit that 1.) I don't own a cable modem (I can't get
cable, long story :( and 2.) I don't do any routing of this nature.
But I have read a lot about it, and I do work with cable modems, so I
think I can help a little :)

The first thing to understand is that with Linux, you don't want to be
routing, and definitely do not want to run routed to do what you want
to accomplish.  Rather, you want to be doing IP forwarding/IP
masquerading which you would enable in the kernel by
re-configuring/re-compiling a new kernel.  You'll definitely want to
scour the HOWTOs, I believe there is one on this subject.  In
addition, you may want to check out the Linux Network and/or Systems
Administrator's guides, as they too, probably have some good
infomation in them.  Other good references may be:
     * The NET-2/3 HOWTO
     * The Ethernet HOWTO
     * The Multiple Ethernet Mini HOWTO
     * Networking with Linux

The Firewalling and Proxy Server HOWTO is probably the best bet, now
that I look, since what you really want to do is set up firewall to
prevent people from coming in, and a proxy server to allow your
internal lan to get out.

Some words of caution.  DO NOT HAVE YOUR LAN CONNECTED AT THE TIME OF
THE CABLE MODEM INSTALLATION!!!!  MediaOne, Cablevision, Time Warner,
and most of the other cable companies (we deal with them all here)
will refuse to connect a LAN to their broadband network.  Simply
remove your hub or coax cable from view, and let them do what they
need to do, then connect everything else up after they leave. =20

You will need 2 Ethernet NICs in the system which will be connected to
the broadband, one for the cable modem and one for the internal LAN..
Most cable companies will gladly provide and install one for you
(MediaOne charges $120 for a 3C509 + labor).  I recommend telling them
you have a NIC, and going out and buying one and installing it yourself.

The cable modem, in reality, is NOT a modem.  It's an Ethernet Bridge.
When the modem^H^H^H^H^Hbridge boots/powers up it does a bootp request
to a server at the cable companies central office to obtain an IP
address.  The NIC is also assigned an IP address, which (at least with
MediaOne) is registered to the MAC address on the NIC (MediaOne
doesn't want you to move the modem to another computer after they
leave.  They apparently check the modems from time to time to see what
MAC they're connected to).  Therefore, you want your proxy
server/firewall configured so that it prevents all incoming
connections from the cable modem and allows only outgoing connections.
You want the IP forwarding/masquerading set up to allow other systems
on your private lan to use the proxy server as a proxy server (I'm not
sure if using the term gateway here is correct).

Some other interesting tidbits of information about cable modems and
cable companies:
    1. Do not expect support for running a LAN over the cable modem from
       the cable company. They don't want you to do it, they won't help
       you do it.
    2. Do not expect to put up a web server to be accessed by from the
       internet. You are a client, not a server. This technology,though
       fully capable of performing in this manner, is not being deployed
       for use this way. Cable companies WILL shut you down for running a
       server of anykind on your end of the network, and it can be
       *forever* :(
    3. Spammers love cable/broadband networks. There have been several
       cases where a broadband network customer has been used by spammers
       and were subsequently shutdown for life by the cable company. What
       happens is the person decides to connect their private LAN to the
       cable modem but sets the firewall up incorrectly. Spammers search
       cable/broadband networks for proxy servers/firewalls (Usually
       Win95/NT) that allow incoming connections and then use that system
       to spam the entire cable/broadband network making the spam appear
       as if you sent it. Usually you will be given 1 warning by the
       cable company, but there have been cases where none was given and
       the customer was completely shut down.
    4. The current BayNetworks LANcity modems (the LCp product) being
       deployed in homes is limited to 1 MAC address connection (which
       means you can't plug the modem into a repeater/mini-hub in order
       to connectit to multiple systems). It is sotfware upgradable to 16
       MACs, but you'll pay a fortune for it to the cable company.
       However, an ethernet switch works wonders :)
    5. Current modems are capable of transmitting at 10Mbs in both
       directions, but are usually deployed throttled back to a trasmit
       speed of 300Kbs and a recieve speed of 1.5Mbs. You want more
       bandwidth, they'll be happy to charge you more money :)

I hope this helps a little bit.  Feel free to e-mail me if you have
any questions.

Seeya,
Paul


  __________________________________________________________________________





  Netscape's Abouts


Date: Tue, 20 Jan 1998 16:00:46 +0100

From: "Stefan K." kampi@physik3.gwdg.de

I've read the article about the about's of Netscape...
Here's some more (some of them may not work or simply do nothing)

about:montulli

about:nihongo

about:francais

about:plugins

about:document

about:license

about:cache

about:global

about:image-cache

about:memory-cache

about:security

about:hype

about:blank

about:mozilla

about:security?subject-logo=

about:security?

about:security?banner-mixed

about:security?banner-insecure

about:security?banner-secure

about:security?banner-payment

mocha:

javascript:

livescript:

view-source:

about:FeCoNtExT=123

PEACE!

kampi


  __________________________________________________________________________





  Netscape on the Desktop


Date: Sat, 24 Jan 1998 06:46:22 -0500

From: Tim Hawes tim@donet.com

I do a lot of my web development work at home on my Linux box. Netscape
for Linux does not automatically check for an existing Netscape session.
As a result, if you try to run two different Netscape sessions, you will
get an error message box with something like the following:

        Netscape has detected a /home/thawes/.netscape/lock
        file.

        This may indecate that another user is running
        Netscape using your /home/thawes/.netscape files.
        It appears to be running on host localhost under process-ID 316.

        You may continue to use Netscape, but you will
        be unable to use the disk cache, global history,
        or your personal ceritificates.

Blah, blah, blah.

If you are like me, and like to have links to URL's using Netscape on
your menus, FVWM GoodStuff or desktop icons, this can be a real
nuisance, having to completely start a new Netscape session each time.
Or you can have them link with this:

netscape -remote 'openURL(your.url)

But then none of your links will work if Netscape is not currently
running. This shell script will look for the lock file that Netscape
creates when it is started. If it does not find the lock file, it will
start a fresh Netscape session. If it does find it, it will send a
netscape -remote command to your current session with the URL you
provide in the argument. If you do not provide a URL, netscape will
simply give you a popup message indicating that you did not specify a
URL. If you do not want Netscape to start up a new window for the URL,
just get rid of the
"new-window"
in the argument in the shell script.

#!/bin/sh
if [ -L $HOME/.netscape/lock ]
        then exec /usr/local/netscape/netscape -remote
'openURL('$*',new-window)';
        else exec /usr/local/netscape/netscape $*;
fi
exit 0

There are limitations with this script. First of all, if Netscape did
not exit cleanly after the last session, then the lock file will still
be present in your ~/.netscape directory. The script will then try to
execute a netscape -remote command and will error out with the console
message that Netscape is not running on :0.0. If you are not redirecting
your console messages anywhere, then you will not see anything except
Netscape not-starting.

            1. Do a ps to see if there are any zombie processes left
over from your last netscape session.

            2. Kill all zombie processes

            3. $ rm ~/.netscape/lock

            4. retry

I am sure there is a way to automate this through a shell script as
well, but I have not yet any time nor motivation to write it.
Some other shortcomings include trying to start Netscape composer with
the -remote  argument for a currently running netscape session. But then
this is probably why you should never name a shell script after the
actual binary it attempts to start.

All in all, if you envy the functionality of Netscape on Windows 95,
automatically checking for an existing netscape session to send the
browser surfing, and starting a new session if it does not find it,
well, here is a simple solution for Linux users, using the power of the
shell.

Tim Hawes


  __________________________________________________________________________





  Re: Printing Problems


Date: Sat, 31 Jan 1998 20:09:18 +0100 (MET)

From: Roland Smith, rsmith06@ibm.net

>Anyone that can help me. I'd love to hear it. I try running

>lpr, but everytime I get no name for local machine.

>How do I set this and/or what is the problem.

>Manish Oberoi

It sounds like you're using LPRng. This is a new version of lpr that's
more suitable for networks. It is included in the newer Slackware releases
and maybe others.

My solution was to grab the bsdlpr.tgz package from ftp.cdrom.com and use
that (This is meant for Slackware). Otherwise you can search the Net for
"bsdlpr".

-- Roland


  __________________________________________________________________________





  Re: Using a 386 Computer


Date: Sat, 31 Jan 1998 20:13:09 +0100 (MET)

From: Roland Smith, rsmith06@ibm.net

>I used to have a 386 25 MHz computer. Not long time ago I bought a

>Pentium 200 MHz computer. Since then I have not played with 386.

>Is there any easy and economical way to connect the 386 to the

>Pentinum computer where I will install the Release 5.0. If so,

>what I can do with it or at lease what I can learn from it.

If you connect both machines with a parallel cable, and configure PLIP
into the kernel on both machines, you can have your own little network. A
386 should at least work nice as a terminal, even if it might not run X
:-)

-- Roland


  __________________________________________________________________________



             Published in Linux Gazette Issue 25, February 1998


  __________________________________________________________________________



[ TABLE OF CONTENTS ] [ FRONT PAGE ] Back 
Next 


  __________________________________________________________________________


      This page maintained by the Editor of Linux Gazette, gazette@ssc.com
      Copyright  1998 Specialized Systems Consultants, Inc.



    "Linux Gazette...making Linux just a little more fun!"
  __________________________________________________________________________

                                 News Bytes
                                      
                                 Contents:
                                      
     * News in General
     * Software Announcements
       


  __________________________________________________________________________


                              News in General
                                      



  __________________________________________________________________________




  March Linux Journal


The March issue of Linux
Journal will be hitting the newsstands
this week. The focus of this issue is Graphical User Interfaces with
articles on XView, GTK+, X-Designer and CDE. Check out the
Table of Contents.


  __________________________________________________________________________




  Netscape Announces Plans To Make Source Code Free

January 22, 1998

     Netscape Communications Corporation today announced bold plans
     to make the source code for the next generation of its highly popular
     Netscape Communicator client software available for free licensing on
     the Internet. The company plans to post the source code beginning
     with the first Netscape Communicator 5.0 developer release, expected
     by the end of the first quarter of 1998.

     Netscape is releasing its currently available Netscape Navigator and
     Communicator Standard Edition 4.0 software products immediately
     free for all users.

     In addition, the company separately announced the launch of an
     aggressive new software distribution program called "Unlimited
     Distribution" to broadly distribute its market-leading Internet client
     software for free. Unlimited Distribution enables Original Equipment
     Manufacturers (OEMs), Internet Service Providers (ISPs),
     telecommunications companies, Web content providers, publishers
     and software developers to download and redistribute Netscape
     Communicator and Netscape Navigator easily with "no strings
     attached."

     To read and post reactions about this latest announcement, Linux
Journal has added a discussion group to our pages.


  __________________________________________________________________________




  Linux in the News


Eric Raymond's article 
"The Cathedral and the Bazaar"
evidently made the rounds at Netscape and helped convince them that giving
away Navigator source code was a good idea. If you've never read it, now is
a good time.

Check out the article by Barton Crockett on msnbc: A Titanic Challenge to
Microsoft

The February issue of Dr. Dobb's Journal has an interview with Larry Wall,
the creator of Perl.


  __________________________________________________________________________




  The SEUL Project

The SEUL (Simple End-User Linux) Project is an organization dedicated to
developing a free
Linux distribution that presents a viable alternative to commercial
PC operating systems.  Currently based on Red Hat Linux, the SEUL
distribution will cover many different aspects of Linux.

For more information:

Roger Dingledine, seul@seul.org

http://www.seul.org/


  __________________________________________________________________________




  The Linux Clothing Project


Check out http://genocide.adept.co.za/lcp/
to have your questions answered.

We're planning another t-shirt, with ordering opening on the 1st of
February,
1998. All the info is on the page.

For more information:

Albert Strasheim, UUNET Internet Africa, 
fullung@ilink.nis.za 


  __________________________________________________________________________




  Stampede Linux Logo Contest!


Along with the highly anticipated release of Stampede Linux 0.55 (heber),
the developers felt it time to have an official logo.  The developers
also felt that they should look elsewhere for development of said logo.
This contest is a result of the looking elsewhere bit. (Yes, prizes are
part of this contest =]).

For more Information:

Matt Wood, Stampede Linux Head Developer, skibum@beer.stampede.org

http://www.stampede.org/


  __________________________________________________________________________




  12th SYSTEMS ADMINISTRATION CONFERENCE (LISA '98)


December 6-11, 1998

Boston, Massachusetts

The LISA '98 program is put together by a volunteer committee of
experienced systems administrators. The Program Committee welcomes
your submission.  The Call for Participation is now available at

http://www.usenix.org/events/lisa98/

Sponsored by USENIX, The Advanced Computing Systems Association
Co-Sponsored by SAGE, the System Administrators Guild


  __________________________________________________________________________




  Japanese Word Processor


Perhaps you'd like to work on another exciting project?  There is
a Windows application, called JWP -- a Japanese Word Processor.  This
package was written by Stephen Chung, and as a GNU product it is freely
distributable.  I've used it extensively over the past few years, and
it is a *great* package.

Unfortunately, JWP is only available for Windows right now, which is
locking out a lot of people under other platforms who might benefit from
it.  As Stephen is quite busy with full-time work and maintaining the
Windows versions (he's developing version 2.00 now), Steve Frampton has
decided to go ahead with a port to X-Windows.

The JWP-Port Project home page contains more information on the JWP
package as well as the JWP-Port project itself.  If you are interested,
please visit the page at 
http://qlink.queensu.ca/~3srf/jwp-port/.

For more information:

Steve Frampton, 3srf@qlink.queensu.ca


  __________________________________________________________________________




  A 3D CAD Application for Linux Project


FreeDesigner is intended to be a fully extendable
Computer Aided Design and Drafting (CAD) application for Linux and other
Unix type operating systems. Initially K Desktop
Environment and GNOME/GTK frontends will be investigated, although it will
be written as "toolkit inspecific" as is possible, by
utilizing a GUI abstraction layer in FreeDesigner Core.

For more information:

Fleming, Petersen & Associates,
http://www.fpa-engineers.com/OD/


  __________________________________________________________________________




  Artificial Intelligence


Interested in Artificial Intelligence, Eveolutionary Computing,
Connectionism, Artificial Life, and/or Software Agents? Want to find
out what software is available for Linux in these areas? Or are you
just curious?

If so, check out my Linux AI/Alife mini-HOWTO at:
http://www.ai.uga.edu/~jae/ai.html

For more information:

John A. Eikenberry, jae@bob.coe.uga.edu


  __________________________________________________________________________




  Digital Domain and Red Hat Linux


Digital Domain used Red Hat Linux not only for special effects in the movie
Titanic but also in commercials that debuted during this Superbowl.
Here's Red Hat's press release.




  __________________________________________________________________________



                           Software Announcements
                                      



  __________________________________________________________________________




  eVote 2.2


Date: Wed, 28 Jan 1998

 eVote image

eVote is a freely available add-on to email list-servers that gives
the members of the list the ability to poll each other. After
installation of the software, the administrator is not involved. All
participants have the power to open polls, vote, change their votes and
view each other's votes if the particular poll was so configured.
The underlying specialized data-server, The Clerk, is also freely
available for Linux systems only. eVote 2.2 is available in both English
and French.

For more information:

Marilyn Davis, mdavis@deliberate.com,
http://www.Deliberate.com/


  __________________________________________________________________________




  FunktrackerGOLD 1.1


FunktrackerGOLD 1.1 has been released. FunktrackerGOLD is a module editor for
Linux that allows you to compose digital music (similar to Fasttracker,
Impulsetracker etc for those who are familar with them).

For more information:

Jason Nunn, jsno@dayworld.net.au


http://www.downunder.net.au/~jsno/proj/unix_projects/


  __________________________________________________________________________




  Quikscript


Quikscript is a PostScript text formatting and typesetting program.
It enables documents to be prepared on any type of hardware, using
visible layout marks to control the appearance of the output, and
produce output on a PostScript printer by despatching Qs and the
document file to the device.  No processing is performed by the
host hardware;  all processing is done within the printer.

The advantage that Quikscript provides, other than portability,
is precision of control over output.  Because it is written in
PostScript, it is interpreted at run-time within the printer.
It is possible to create documents that modify the Quikscript
program during execution.  It is very easy to include other
PostScript programs or fragments with Quikscript.  It is possible
to use special PostScript fonts, such as hand-generated ones.
Graphics generated from a variety of sources can be easily included,
as can text output from computer programs.  It is possible to embed
Quikscript within a document, such as an advertisement or a telephone
bill.

The Quikscript distribution is available by anonymous ftp from
"ftp.adfa.oz.au" in the directory "pub/postscript".  It may also be
accessed through the World Wide Web at URL
  http://www.cs.adfa.oz.au/~gfreeman/


For more information:

Graham Freeman, g-freeman@adfa.oz.au


  __________________________________________________________________________




  YP-Tools & YP-Server


Version 1.4 of the YP (NIS version 2) tools for Linux has been released.
This package contains ypcat, ypmatch, ypset, ypwhich and yppasswd.
You need this package for GNU C Library 2.x and Linux libc 5.4.21,
but you should use libc 5.4.36 or later due some NIS bugs in libc.
It replaces the old yp-clients 2.2 on this systems.

You could get the latest version from:

http://www-vt.uni-paderborn.de/~kukuk/linux/nis.html

                          ------------------------


Version 1.2.7 of an YP (NIS version 2) Server for Linux has been released.
It also runs under SunOS 4.1.x, Solaris 2.4 - 2.6, AIX, HP-UX, IRIX,
Ultrix and OSF1 (alpha).

The programs are needed to turn your workstation in a NIS server.
It contains ypserv, ypxfr, rpc.ypxfrd, rpc.yppasswdd, yppush, ypinit,
revnetgroup, makedbm and /var/yp/Makefile.
This is NOT an NIS+ (NIS version 3) Server !
ypserv 1.2.7 is available under the GNU General Public License.

You could get the latest version from:

http://www-vt.uni-paderborn.de/~kukuk/linux/nis.html

For more information:

Thorsten Kukuk, kukuk@vt.uni-paderborn.de


  __________________________________________________________________________




  Motif 2.1 for Linux


The latest and best release of Motif (version 2.1) is now available for
the best operating system!
Linked against both glibc (yes, it DOES work with RedHat 5) and libc (ie
it works with Debian, Caldera, RedHat 4.0).


For more information:

LSL, http://www.lsl.com/,
motif@lsl.com 

NC Laboratories, http://www.nc-labs.com,
sales@nc-labs.com


  __________________________________________________________________________




  NetTracker


NetTracker is one of the most powerful, yet easy to use Internet and
Intranet usage tracking programs on the market today. NetTracker allows
marketing professionals, webmasters and ISPs to get the essential
information they need to make informed decisions regarding their web
sites.

A demonstration of NetTracker can be seen at [http://www.sane.com/demo/],
and a free 30 day evaluation copy can be downloaded from
[http://www.sane.com/eval/].

For more information:

Sane Solutions, info@sane.com


  __________________________________________________________________________




  SCEPTRE-90


SCEPTRE-90
        a program for the analysis and simulation of
        electrical nonlinear networks and dynamic systems
is now available for Linux users (free of charge).
The ftp site, where the program can be found is:

novilux.fh-friedberg.de/pub/sceptre_linux.

Detailed documentation in english and german as well as many samples
are included in the archive file.

For more information:

Prof. Dr. Wolf-Rainer Novender, novender@novilux.fh-friedberg.de



  __________________________________________________________________________




  BANAL 0.04 (free bookkeeping software)


    BANAL is a bookkeeping system that allows you to track invoices,
    clients, projects, TODOs, bank accounts and expenses.  BANAL is a
    client/server application so you can keep one set of books on your
    system while allowing everyone access.

 For this release, BANAL can store your information, list (and allow
    searching of) information and generate invoices, income and expense
    statements.  You can also make and use recurring and memorized
    transactions to ease the burden of creating them manually.  Check
    the TODO file, that is included with the distribution, for an idea
    of what is coming in the next release.

    If you want to obtain BANAL and try it out, ftp to:

ftp://sunsite.unc.edu/pub/Linux/apps/financial/accounting.

For more information:

Matthew Rice, Matthew.Rice@ftlsol.com


  __________________________________________________________________________




  Aegis 3.1 - Software Configuration Management System


Aegis is a transaction-based software configuration management system.
It provides a framework within which a team of developers may work
on many changes to a program independently, and Aegis coordinates
integrating these changes back into the master source of the program,
with as little disruption as possible.


http://www.canb.auug.org.au/~millerp/aegis.html

For more information:

Peter Miller, millerp@canb.auug.org.au


  __________________________________________________________________________




  Free CORBA 2 ORB - omniORB 2.4.0


The Olivetti and Oracle Research Laboratory has made available the second
public release of omniORB (version 2.4.0). We also refer to this version
as omniORB2.
omniORB2 is copyright Olivetti & Oracle Research Laboratory. It is free
software. The programs in omniORB2 are distributed under the GNU General
Public Licence as published by the Free Software Foundation. The libraries
in omniORB2 are distributed under the GNU Library General Public
Licence.

Source code and binary distributions are available from our Web pages:

http://www.orl.co.uk/omniORB/omniORB.html

For more information:

Dr. Sai-Lai Lo, S.Lo@orl.co.uk


http://www.orl.co.uk/omniORB/omniORB_240/


  __________________________________________________________________________




  New Linux STREAMS Release


Linux STREAMS (LiS) version 1.12 is now available.  This version
supports kernels 2.0.24 through 2.0.33.  By mutual consent of the
authors, the licensing terms have been changed to the GNU Public Library
License. This allows linking of proprietary STREAMS drivers with the LiS
code.
This version contains an install script which automates the
installation.

It can be downloaded from ftp.gcom.com from the directory
/pub/linux/src/streams-1-15-98.

For more information:

Mikel L. Matthews, mikel@gcom.com


  __________________________________________________________________________




  Speech Enhancement by Kalman Filtering Package


If you are interested in speech enhancement, signal processing
in general, or applications of Kalman filtering, read on.  Mr. Kybic has just
finished his diploma work, entitled "Kalman Filtering and Speech
Enhancement" which includes, among other things, an implementation of
a Kalman smoothing based speech enhancement algorithm, working on
speech signal corrupted by slowly changing coloured additive noise.
Tested on Linux and HP-UX. Parallel version using PVM.
It is not perfect but might be inspiring anyway. Free for
non-commercial use.


http://cmp.felk.cvut.cz/~kybic/dipl

For more information:

Jan Kybic, xkybic@sun.felk.cvut.cz


  __________________________________________________________________________



             Published in Linux Gazette Issue 25, February 1998


  __________________________________________________________________________



[ TABLE OF CONTENTS ]
[ FRONT PAGE ]
Back 
Next 
  __________________________________________________________________________

      This page written and maintained by the Editor of Linux Gazette,
      gazette@ssc.com
      Copyright  1998 Specialized Systems Consultants, Inc.


    "Linux Gazette...making Linux just a little more fun!"


  __________________________________________________________________________




                               The Answer Guy
                                      
                   By James T. Dennis, answerguy@ssc.com
          Starshine Technical Services, http://www.starshine.org/
                                      

  __________________________________________________________________________

  Contents:

     * Removing LILO, Reinstalling MS-DOS
     * Running as root on Standalone Systems -- DON'T
     * More on Netscape Mail Crashes

  __________________________________________________________________________




  Removing LILO, Reinstalling MS-DOS

 
From: Stephen Britton, sbritton@westnet.com


 My parents just told me that I have to
 give our extra machine (a 486 running Red Hat 4.1)
 to my younger brother, who only knows Windows.
 I have formated the drive with MS-DOS, but I
 can't seem to figure out how to remove LILO. I
 recall reading somewhere that it can be done by
 c:\fdisk /mbr But that doesn't seem to be working.
 Please help, he is returning to College next week!!



        That should do it. However -- which version
        of MS-DOS are we talking about.  This option
        was introduced in MS-DOS 5.0.  Although it
        wasn't documented at the time it is widely
        used to recover from a variety of boot
        viruses.

        If that that doesn't work -- boot from a Linux
        floppy -- zero out the whole partition table
        and MBR (dd if=/dev/zero of=/dev/hda -- for
        a primary IDE, or of=/dev/sda for the primary
        SCSI and count=1 (or 2 or so)).

        Then you can boot from a DOS installation floppy
        and it will insist that you run fdisk and will
        treat the drive as though it was brand new and
        previously unformatted/partitioned.

        (Technically you only have to zero out or
        put anyting other that 0x55AA as the last two
        bytes of the MBR -- that's the signature that
        tells FDISK that this drive has been previously
        partitioned.  However, it's just easier to zero
 out the whole mess.)

        Naturally this will make all of the data on the
        drive inaccessible -- but I suspect you already
        knew that was going to happen anyway.

        Alternatively -- if fdisk /mbr doesn't work --
        you should find out *why*.  If this is an early
        version of DOS -- you should probably try to
        get a copy of 5.0 or later (or consider Caldera's
        OpenDOS).  I suppose you could also consider
        installing Win '95, considering the likelihood
        that your brother will need access to TCP/IP
        utilities like web browsers and some e-mail
        package.

        On the one hand I hate to push some further down
        the throat of the snake -- on the other hand  we
        should always do our best to act in the best
        interests of our customers -- even when they're
        our pesky brothers.



P.S. I tried talking him into taking Linux, but he's
locked into the Windows mindset.



        Trying to convince someone of something is
        usually a losing proposition. Try to understand
        his real requirements -- and offer the best
        advice you can.

        It may be that Windows is the best environment
        for him.  It may also be that there are over-riding
        constraints that force him to choose a Windows
        compatible platform.

        I think that many organizations are now "chained" to the
        Microsoft aggenda by their current investment in their
        existing data files (all their spreadsheets, documents,
        and many of their small, departmental mailing lists, and
        databases are locked into various versions of the proprietary
        .DOC, .XLS, and other data formats).

        Microsoft clearly intends to maintain this state.  I
        guess that is has been the core of their strategy for the
        last five years (since about the release of Win 3.0 or 3.1).

        (It is also not unique to them -- most major commercial
        hardware and software vendors have tried to "lock" their
        customer into upgrade paths.  Companies like DEC, IBM,
        and HP have each had their VMS, MVS, MPE OS' with this
        aggenda.  Consequently their efforts at Unix have often
        been "skunkworks" -- and have been highly politicized for
        over a quarter of a century).

        I ask people to consider this tidbit in their long range
        planning.  Truly optimizing for the present requires
        looking to the future as well.

-- Jim
  __________________________________________________________________________




  Running as root on Standalone Systems -- DON'T

 
From: griffin@ameritech.net


 What advantages are there, if any, to running your single-user
 system as a normal user and not root?



        If you're absolutely perfect, you never make a typing mistake or
        issue a wrong command, or a right command from a wrong directory
        with the wrong arguments, *and* you only run perfect software,
        with no bugs in it at all, *and* you are totally disconnected
        from the world (you don't get any e-mail, never use netnews, or
        IRC etc) -- then you *might* be sort of safe running as root on
        your system.

        If you simply don't care about your data and you like the idea
        of rebuilding your system configuration from scratch then throw
        all caution to the wind and go for it.

        However, for the vast majority of us, it's the most minimal bow
        to prudence to log in as an unprivileged user for the vast
        majority of work you do at your system.

        The advantages are:
     * Your normal user account can't accidentally damage vital system
       files with any normal command. The most common cause of data loss
       and downtime is operator failure. When I worked on the tech
       support lines at Norton Computing (the largest publisher of DOS
       and Mac data recovery tools) the accidental deletion calls were
       more common than all other causes combined. Even on Unix and other
       multi-user system the system administrators (or "operators") are
       the primary cause of downtime and data loss. It simply makes sense
       to minimize these risks.
     * Programs you are running (buggy, or even trojan horses and
       viruses) can't readily damage system files. Software bugs are the
       second most common cause of data loss. Trojan horses and viruses
       are a rarity in the Unix world -- precisely because the prevailing
       custom is to run software with minimal privileges. When it comes
       to software that legitimately needs privileged access (like the
       Red Hat rpm system when it's used to update or install new
       packages), many sysadmins run new software on a "sacrificial"
       system or in a "chroot jail."
     * Even programs that are reasonably O.K. may vulnerable to
       deliberate attacks. If someone uses 'write' to ANSI-bomb you
       (re-writing the keybindings in your terminal/console driver for
       malicious purposes) or exploits some 'feature' of IRC or your mail
       reader to execute code on your behalf, you'd like to limit the
       damage they can do.

        The disadvantages mostly relate to convenience.  A typical
        microcomputer user from a DOS, Windows, OS/2, MacOS, AmigaDOS,
        CP/M or similar background is used to being able to edit any
        file and change any setting directly and quickly.

        By maintaining the discipline of only doing administrative tasks
        from a 'root' login -- and all of your other work from one or
        more 'user' accounts you are forced to pause and consider the
        implications of what you're doing.

        It's also nice that you can partition your work into distinct
        domains -- you can always play games from your 'player' account
        -- and none of those games can damage you're thesis project, or
        financial records, or whatever.

        Personally I think this could use some improvement.  I'd like to
        see a system whereby by each user is implicitly the manager of a
        group of "roles."  For single-user home systems this would be
        basically the same as using your root account to create new
        psuedo users for yourself.  On multi-user systems it would
        delegate the task of creating new roles and rolegroups to the
        user --- so that each user's "base account" in effect becomes an
        administrator of this own roles.

        The problem I see with that is that there's no support in Unix
        for it.  I think it would take alot of work to build a set of
        tools to support it (and many of these tools would have to be
        SUID 'root' in traditional Unix systems -- or would require some
        totally different lower level support such as a variant of a
        "capabilities" system.  In any event these tools would be very
        security sensitive -- and early versions would probably be the
        cause of numerous exploits.

        However, none of that matters to the home user with root access
        to his own box.

-- Jim
  __________________________________________________________________________




  More on Netscape Mail Crashes

 
From: Chris, colohan@cs.cmu.edu


 In http://www.linuxgazette.com/issue24/lg_answer24.html, you suggest
 removing the ~/.netscape tree to stop Netscape Mail from crashing.
 I have had the same problem several times, and it does not appear to be
 anything in that directory -- it is the mail files themselves.  It
 appears as though Netscape will occasionally put a wee bit of corruption
 in your ~/nsmail/[Inbox, Trash, etc.] files, which prevents it from
 reading them.  And it crashes when it encounters any corruption in these
 files.  It also seems to crash if your trash gets too large.  (Anything
 over 1MB seems hopeless).


 So one solution is to back up your mail elsewhere, and erase your mail
 directory.  Then Netscape will create new, valid, empty mail folders,
 and stop crashing for a while.  Another solution is to open the files
 yourself (they are just text files), and erase any messages that look
 suspect.



        These sound like excellent troubleshooting suggestions,
        recovery procedures and workarounds.

        I believe I also mentioned that my e-mail is far too important
        to me to entrust to Netscape (or any "new" product).  For
        years I used 'elm' and before that it was 'mush' (mail user's
        shell).  The switch from 'elm' to MH (using emacs' mh-e and Gnus
        interfaces) was nerve-wracking.  (I deal with over a hundred
        messages a day -- and it's at the core of my business that I
        "keep up" on administration and security issues for my customers).

        My biggest customer (another consultant in a different specialty)
        has also made this switch, after over a decade of using emacs'
        RMAIL.  As you can imagine there have to be some pretty extensive
        advantages to a package to warrant changing from one client to
        another.  (Merely having a "prettier" interface and a few bells
        and whistles isn't nearly enough).

        Consequently I will probably stay in a poor position to answer
        questions about NS's mail and news readers.

        As for the fact that NS crashes when encountering corruptions
        in folders and messages -- that's just poor quality control and
        poor coding.  As usual the issues of "time-to-market" and
        "pretty interface" dominate the development of commercial products.

        The nature of the computer software industry practically guarantees
        that the most widely used commercial products will have bugs of
        this sort.  This is the result of a set of corporate priorities
        that don't match typical customer priorities -- and is a byproduct
        of the selection process by most software is purchased.

        I could go on about this for many pages.  Since I worked in the
        software industry for a long time -- I had a lot of time to
        observe the process first hand.  (Since I was doing tech support
        I also had an abundance of free neural cycles to think about the
        issues, as well).  Here's a few observations that will help explain
        my conclusion:
     * Software companies sell features. They only make money on product
       sales and upgrades -- and the margins are much better in upgrades
       than in initial sales (since many, possibly most, upgrades are
       direct revenue -- and no "cut" goes to the channel distributors
       and retailers).
     * Most software marketing is directed to channel distributors,
       retailers, and fortune 1000 corporate purchasing agents. Most of
       it is not directed to end users and home customers. These
       intermediaries largely determine the pricing and availability of
       most commercial software, and the advertising that goes to the
       end-user. The priorities of these intermediaries are: high sales,
       low product return rates (RMA's). The purchasing agents at Merisel
       and Egghead don't do detailed requirements analysis on behalf of
       their customers.
     * Product returns are most tightly correlated with how long the
       customer has had the product before becoming dissatisfied with it.
       This is why "ease of use" and "ease of installation" are so
       important in commercial software. If the vendors can keep the
       majority failures from occuring for 60 to 90 days -- very few
       customers will return the product even if the publisher's policies
       allow it.
     * There is much more focus on corporate sales than on retail for
       most shrinkwrapped software. This is due to high rates of piracy
       among home users and the obvious observation that every "customer"
       contact costs money (sales and tech support time). So one
       successful sale at TransAmerica costs much less than 10,000
       individual sales to home users and SOHO markets.
     * Most corporate software users have little say and relatively
       little interest in what software they use. They are told what do
       so -- and usually don't question that. Corporate purchasing agents
       get plenty of political pressure from managers and executives but
       usually neither the purchasing agent nor the manager spends much
       time "in the trenches" with the software that's being used.
     * Managers are far more worried about being "wrong" than being
       "right." An excellent product from an unknown source is considered
       a much higher risk than a mediocre product that gets good press
       and comes from a large, well-known source.
     * The computer industry press can't sell much copy by talking about
       "old" products. They also can't depend on any significant amount
       of advertising unless they maintain close, positive,
       relatiionships with their major advertisers. Most of their
       advertisers are hardware and software companies.
     * Because the writers in most of these magazines are working with
       new (usually pre-release or "beta") software or versions they have
       no opportunity to discover the bugs that take two or three months
       to show up in typical use. In addition most of these writers
       either don't use the products they review extensively, or tend to
       rely on earlier versions for their production and critical work.
       Almost no one is a full-time professional journalist in the
       computer industry -- and those that are in this position are in a
       rather poor position to do in depth evaluation of anything other
       than word processors.
     * Despite these limitations -- which almost gaurantee that we should
       take software reviews with a large block of salt -- these reviews
       in major magazines become the focal point of most discussion on
       the topic. By the time a given customer has purchased, installed,
       configured, and learned a given product it's usually too costly
       (emotionally and in time) to "start all over."
     * The fact that a large number of commercial packages store some or
       all of "their" data (not "yours" -- but "theirs") in proprietary
       formats also increases the risks and costs associated with
       switching.
     * Finally there is a strong possibility that the next product a
       given customer tries to switch to will be as bad or worse.

        When you go through all of this -- even if you don't agree
        with half of the observations -- it's easy to see why so
        many people live in quiet desperation, hating their most
        important software.

        Sadly it takes *really* bad software to fail as a result of its
      bugs.  dBase IV comes to mind.  It doesn't take much for really
        high quality software to fail as a result of poor marketing
        (or the superior marketing and industry dominance of competitors).
        DESQview comes to mind.

        By contrast almost all free software is chosen by end-users
        based on recommendations from other end-users.  It is produced
        by people whose only rewards are: access to their own tool
        to solve their own problems, the satisfaction of having lots
        of users, and some chance for fame and sincere admiration.
        They gain nothing by claiming more than they deliver (except
        more e-mail with more support questions).

        Luckily we, Linux and free software users, are blessed with
        alternatives.  These systemic problems are what I think we are
        really "free" of.

-- Jim





  __________________________________________________________________________


                     Copyright  1998, James T. Dennis
          Published in Issue 25 of the Linux Gazette February 1998
                                      


  __________________________________________________________________________



[ TABLE OF CONTENTS ] [ FRONT PAGE ]
Back 
Next 

    "Linux Gazette...making Linux just a little more fun!"



  __________________________________________________________________________




           Review of "A Practical Guide to Linux" by Mark Sobell
                                      
                              By Bernard Doyle
                                      


  __________________________________________________________________________



Several months ago, with some trepidation and the assistance of a friend who is
somewhat more knowledgeable than myself about computer hardware, I took the
plunge and installed Linux on my Pentium PC.

Soon after, I downloaded a pile of assorted How-To's, FAQS and Tutorials from
the Internet to  start doing something useful with Linux. The downloaded
documentation was handy but I frequently had trouble finding answers to
important
questions. After a month I purchased 2 books - Running Linux by Welsh &
Kaufman and
A Practical Guide to Linux by Mark Sobell. Welsh & Kaufman's Book is a well
known,
highly regarded, authoritative book on Linux. It is fundamentally about how
to set
up the major Systems and Hardware and how they interact.

Sobell's book, by way of contrast, approaches Linux from a software perspective
.
There is little, if any, overlap between the two books, even when they are
talking
about the same thing. The two books effectively work opposite sides of the Linu
x
street. There is also a contrast in the styles of the two books. Welsh and
Kaufman
are somewhat "chatty" while Sobell basically tells it like it is with little
or no
opinion thrown in.

Although there is a chapter on System Administration, Sobell's book
concentrates on
showing how to use the Linux variants of the standard Unix software
packages. There
are chapters on  X-Windows, vi, emacs, Linux Internet and Networking
Software, bash
(2 chapters on this important subject), the TC Shell, the Z Shell and
Programming
Tools.

Learning the bash Shell by Cameron Newham and Bill Rosenblatt (published by
O'Reilly)
covers the use of bash in more detail than Sobell's book, but I suspect it
is a little
advanced for the beginner. Sobell's chapters on bash were the most
informative and useful
information that I have come across so far. Being something of a
scripting/batch
file afficianado the two chapters on bash provided just the information I
needed
to produce a host of useful custom scripts.

The Command Summary takes up about a third of the book and maintains the high
standards of the rest of the text. Sobell uses internal page references quite
freely. This often results in a lot of page turning. I assume this was done
to avoid
repetition of material, and given the vast amount of material that could be
included
in a book on Linux/Unix software this is a reasonable compromise as it
leaves more
room for additional material.

This is not a book for solving Linux hardware or installation problems. If
you are
looking for that sort of information then get Welsh and Kaufman's book, or
download
the relevant "How-Tos" (or both). This is the book to use if you want to do
learn how
to do useful things with the software. The book manages to cover almost all
the major
software topics, and it covers them well.

I do  have some quibbles with the book. The Table of Contents uses a
typeface that
is much too large, As a result it runs from page xvii to page xlvii. (That's
31 pages
for the Roman numerally challenged) Hopefully, the next edition will address
this
issue.

One notable Linux/Unix Utility not mentioned at all is Perl. A short 5-6 page
reference to it in the Linux Utility Program Section or an Appendix would
have been
nice. Summarising Perl in 5-6 pages is possibly a tall order, but I would have
liked some mention or reference to it.

Although the book gives a good rundown on accessing Linux Documentation and
Software
from the Internet, a Bibliography of Linux/Unix books would have been good.
"Running
Linux" does have a Bibliography, so if you have that book as well then I
guess you
have the information anyway (although it's a little out of date).

The book is an adaptation of Sobell's other Practical Guides to the Unix
System and
this shows, and it's not necessarily a bad thing either. However, given the
nature of
the Linux community, I doubt whether photographs of a mouse and keyboard are
necessary.
On the positive side, the book is professionally organized, indexed and
referenced. It
is substantially larger than the other Practical Guides to Unix by the same
author as
well.

In the light of the high quality of the book overall, all of the above
criticisms are
minor and easily overlooked. The book is far and away the best I have seen
on the
market for quickly and effectively using Linux software. If you have a copy
of A
Practical Guide to Linux and Running Linux along with a few appropriate
"How-Tos",
you should be able to get solutions to most of your Linux  questions as well as

productively use your system.



  __________________________________________________________________________


                      Copyright  1998, Bernard Doyle
           Published in Issue 25 of Linux Gazette, February 1998
                                      




  __________________________________________________________________________


[ TABLE OF CONTENTS ]
[ FRONT PAGE ]
Back 
Next 

  __________________________________________________________________________



    "Linux Gazette...making Linux just a little more fun!"



  __________________________________________________________________________




                                Bourne/Bash:
                       Shell Programming Introduction
                                      
                              By Rick Dearman
                                      


  __________________________________________________________________________



Sooner or later every UNIX user has a use for a shell script. You may
just want to do a repetitive task easier, or you may want to add a bit
more kick to an existing program. An easy way to accomplish this is to
use a shell script. One of the first shell scripts I wanted was something
that would change a directory full of files which were all in capital letters
to lowercase. I did it with this script:

LCem.sh


1       #!/bin/sh



2



3       DIR=$1



4



5       for a in `ls $DIR`



6       do



7
fname=`echo $a | tr A-Z a-z`



8
mv $DIR/$a $DIR/$fname



9       done;



10      exit 0



11       #this script will output and error
if the file is already lowercase, and assumes argument is a directory


Line one tells the computer which shell to use, in this case it is "sh"
the bourne shell ( or this may be a link to the bash shell ). The combination
of the two symbols #! are special to the shell and indicates what shell
will run this script. It IS NOT IGNORED like other comment lines. Line
3 sets a variable called DIR to equal the first argument of the input.
(Arguments start at $0, which is the name of the shell script or in this
case LCem.sh ).

In line 5 we enter a control loop. In this case it is a for loop. Translated
into english this line means for every entry "a" that I get back from the
command `ls $DIR` I want to do something. The shell will replace the variable
name $DIR to whatever was typed on the command line for you. Line 6 starts
the loop.

Now in line seven we make use of the UNIX utilities available , `echo`
and `tr`.  So what we are doing is echoing whatever the current value
of $a is and piping it into tr which is short for translate. In this case
we are translating uppercase to lowercase, and setting a new variable called
fname to the result.

In line eight we move the file $DIR/$a, whatever it may be to $DIR/$fname.
Line nine tells the shell to go back and do all the other $a variables
until it is done. And finally line 10 we exit the script with an error
code of zero. Line eleven is a comment.

This script  wouldn't have been needed to change one or two file
names, but because I needed to change a couple of hundred it saved me lots
of typing.  To get this to run on your machine you would have to chmod
the file to be executable. Like this `chmod +x LCem.sh` .  Or you
could evoke the shell command directly and give it the name of your script
like this `sh LCem.sh`. Using the comment and exclamation mark combination
would tell the kernel what shell to evoke and is the normal way to do things.
But remember if you use the #! then the file itself needs to have execution
permissions.

It is only eleven lines but it shows us a lot about shell scripting.
We have learned how to get the computer to run the script using the #!
combination. This combination of a comment mark and a bang operator, or
as some people call it an exclamation mark, is used to start a shell script
without having to evoke the shell first.  We learned that a # is how
we can write a comment into our script and have them ignored when the script
is processed. We learned how to pass arguments to the script to get input
from the user, and  we know how to set a variable. We have glanced
at one of the many control structures we can use to control the functionality
of a script.

Don't worry if you didn't really get all of that. We shall now move
on to explaining some of the most common decision making / control structures.
The first one we want to look at is the `if` statement. In every programming
language we want to be able to change the flow of the program based on
various conditions. For example if a file is in this directory do one thing.
If it isn't do something else. The syntax for the if command is:

if expression then
    commands
fi

So if the expression is true the statements inside the if block are
executed. Lets look at a simple example of the if statement.

WhoMe.sh

1    #!/bin/sh
2
3    # set the variable ME to the first argument after
the command.
4    ME=$1
5
6    # grep through the passwd file discarding the output
and see if $ME is in the file
7    if  grep $ME /etc/passwd > /dev/null
8    then
9    # if $ME is in the file out put the following line
10        echo "You are a user"
11    fi


 Notice the extensive use of comments on lines 3, 6, and 9. You
should try to comment you scripts as much as possible because someone else
may need to look at it later. In six months you may not remember what you
were doing, so you might need the comments as well.

Using the if statement we can now correct some of the errors which would
occur in the lowercasing script. In LCem.sh the script will hang if the
user doesn't input a directory as an argument. To check for an empty string,
we would use the following syntax:

if [ ! $1 ]

This means if not $1. The two new things here are the use of the bang
operator, or exclamation mark as the symbol for NOT.  So lets add
this new knowledge to our program.
#!/bin/sh

1    if [ ! $1 ]
2    then
3    echo "Usage: `basename $0` directory_name"
4     exit 1
5    fi
6
7    DIR=$1
8
9       for a in `ls $DIR`
10    do
11           fname=`echo
$a | tr A-Z a-z`
12     mv $DIR/$a $DIR/$fname
13    done;

Now if the user types in the command but not the directory then the
script will exit with a message about the proper way to use it, and an
error code of one.

 But what if we really did want to change the name of a single
file? We have already got this command wouldn't it be nice if it could
cope. If we want to do that then we need to be able to test if the argument
is a file or directory. Here is a list of the file test operators.


CAPTION:





    Parameter




    Test





 -b file

 True is file is a block device



 -c file

 True if file is a character special file



 -d file

 True if the file is a directory



 -f file

 True if file is a ordinary file



 -r file

 True if file is readable by process



 -w file

 True if file is writeable by process



 -x file

 True if file is executable


There  are more operators but these are the most commonly used ones.
Now we can test to see if the user of our script has input a directory
or a file. so lets modify the program a bit more.

1    #!/bin/sh
2
3    if [ ! $1 ]
4    then
5     echo "Usage: `basename $0` directory_name"
6     exit 1
7    fi
8
9    if [ -d $1 ]
10    then
11     DIR="/$1"
12    fi
13
14    if [ -f $1 ]
15    then
16     DIR=""
17    fi
18
19    for a in `ls $DIR`
20    do
21        fname=`echo $a | tr A-Z
a-z`
22        mv $DIR$a $DIR$fname
23    done;

We inserted lines nine through seventeen to do our file/directory checks.
If it is a directory we set DIR to equal "/$1" if not we set it blank.
Notice we now put the directory slash in with the DIR variable and we've
modified line 22 so that there is no slash between $DIR and $a. This way
the paths are correct.

We still have a few problems with our script. One of them is that if
the file which is getting moved already exists then the scripts outputs
an error. What we want to do is check the file name before we attempt to
move it. Another thing is what if someone puts in more than two arguments?
We'll modify our script to accept more than one path or filename.

The first problem is easily corrected by using a simple string test
and an if statement like we have use earlier. The second problem is slightly
more difficult in that we need to know how many arguments the user has
input. To discover this we'll use a special shell variable which is already
supplied for us. It is the $# variable, this holds the number of arguments
present on the command line. Now what we want to do is loop through the
arguments until we reach the end. This time we'll use the While loop to
do our work. Finally we shall need to know how to compare integer values,
this is because we want to check the number of time we have gone through
the loop  to the number of arguments. There are special test options
for evaluating integers, they are as follows




 Test

 Action



 int1 -eq int2

 True if integer one is equal to integer two



 int1 -ge int2

 True if integer one is greater than or equal to integer two



 int1 -gt int2

 True if integer one is greater than integer two



 int1 -le int2

 True if integer one is less than or equal to integer two



 int1 -lt int2

 True if interger one is less then interger two.



 int1 -ne int2

 True if integer one is not equal to integer two




Using this new knowledge we'll modify our program.

1    #!/bin/sh
2
3    if [ ! $1 ]
4    then
5         echo "Usage: `basename
$0` directory_name"
6     exit 1
7    fi
8
9    while [ $# -ne 0  ]
10    do
11

if [ -d $1 ]
12

then
13

DIR="/$1"
14

fi
15
16

if [ -f $1 ]
17

then
18

DIR=""
19

fi
20
21

for a in `ls $DIR`
22

do
23

fname=`echo $a | tr A-Z a-z`
24

if [ $fname != $a ]
25

then
26


mv $DIR$a $DIR$fname
27

fi
28

done;
29
30

shift
31    done

What we've done here is to insert a while loop on line 9 which checks
to see if the arguments listing is equal to zero. This may seem like we
just created an infinite loop but the command on line 30 the shift saves
us. You see the shift command basically discards the command nearest the
command name. (LCem.sh) and replaces it with the one to the right. This
loop will succeed in discarding all the arguments eventually and then will
equal zero and exit our loop.

And finally note the if statement on line 24, this checks to see if the
file name is already lowercase and if so ignores it.

I hope you have enjoyed this brief introduction to Bourne / Bash programming.
I would encourage you to try some of these examples for yourself. In fact
if you want you could make this script much better by using a switch like
-l to lowercase and -u to uppercase and modifying the script to handle
it.


I take full responsibility for any errors or mistakes in the above documentatio
n.
Please send any comments or questions to rick@ricken.demon.co.uk

REFERENCES:

The UNIX programming environment
by Brian W. Kernighan & Rob Pike
Published by Prentice Hall

Inside UNIX
Published by New Riders



  __________________________________________________________________________


                       Copyright  1998, Rick Dearman
           Published in Issue 25 of Linux Gazette, February 1998
                                      




  __________________________________________________________________________


[ TABLE OF CONTENTS ]
[ FRONT PAGE ]
Back 
Next 

    "Linux Gazette...making Linux just a little more fun!"



  __________________________________________________________________________



                           Clueless at the Prompt
                                      
                      By Mike List, troll@net-link.net
                                      


  __________________________________________________________________________


                                  [INLINE]


    Welcome to installment 5 of Clueless at the Prompt:



Here's this month's account of the triumphs, trials and
tribulations that I caused myself or encountered since the last
time, and a couple tips that may come in handy and increase your
understanding of linux.
  __________________________________________________________________________

    *Changing Disks:
 If you make partitions the same size as your
previous disk's, you can simply hook up your new disk as
slave(See the documentation that comes with your new drive, or
sometimes there's a diagram on the top of the disk that shows
jumper settings to configure the disk as master, slave, or only
disk.), and use the "dd" command. You'll have to mount the old
disk first, use fdisk to set the partitions to the desired size,
then mount each partition separately, if you mount your
partitions one at a time, you'll avoid having the whole old disk
contents try to settle on your new disk.
  __________________________________________________________________________

    *Backups:
 If you have any serious need of any of
the information on your old disk, I can't stress the value of
periodic backups enough. Even if you just backup the
configuration files you worked so hard to tweak to your liking,
and maybe your checking account balance, anything that you don't
have to remember or reinvent is a Good Thing(tm).

If you adopt the strategy of selective backups, you can easily
fit them on a floppy or three, rather than using a whole tape or
zipdisk to backup what you have already on your installation
media. I think that especially if you installed from a CD, the
plain vanilla install like you did the first time, can put you
back on your feet when combined with a backup of only those files
you wrote or modified, and and any special software that wasn't
included in the distribution.
 To find out what files and libraries are required to run an app,
 you can use

    ldd filename



Another command that you can use to find out more about files is,
strangely enough, file. File can be used as

    file filename



which will give information about other files, as well as
executables.

Yet one more helpful command is which, used like
   which executable




where executable is the command used to start the application
as in

   which makewhatis




to find out where the executable is located, pretty handy if you
are modifying your path statement.

  __________________________________________________________________________

    *Oh did I mention backups?

I stress this because I know from experience that failing to backup your data
is an extremely stupid and easy thing to do, but since I apart from the cardiac
care unit and the nuclear reactor I don't have anything mission critical on my
box right now, I'm still too lazy to back it up. Please excercise
a little cautious computing if anyone's data needs to be secure
  __________________________________________________________________________

    *A little bit about FVWM configuration files(fvwm-1.x):
 with a
little text editting, you can configure your Xdesktop to your
liking. FVWM-2.x uses m4 macros, which I haven't even tried to
acquaint myself with yet. FVWM is configurable in either
system.fvwmrc or a .fvwmrc in your home directory, so you can set
a consistent set of applications system-wide or change the
defaults to your idea of a convenient desktop. Most of the
possible modifications are explained in comments preceding the
line to be editted or uncommented, and if you have X applications
that aren't included in the default popups, all you have to do is
follow the examples of those already there, usually something like

   Exec "PROGNAME"   exec progname -options &



the "&" causes the program to execute in the background, which
keeps it from monopolizing X. Note that some apps, such as
ImageMagick don't seem to want to share, and those will have to be
exec'ed without the "&". Also non-X apps can usually be run by
invoking an xterm or rxvt, in which case the titlebar can be
changed to reflect the program name, as in

 Exec  "Top" exec color_xterm -font 7x14 -T Top -n Top -e top &



which starts a color_xterm running top. Top, in case you aren't
familiar, basically lists the amount of resources each process is
using. For more info type

    man top


or better yet just type    top

  __________________________________________________________________________

    *Some stuff you may not hear anywhere else (so basic they forgot to tell
    you):
 Redirecting output: you obviously can print a file
to your monitor screen, and with a little luck even to a piece of
paper via your printer, but did you know you can print a file to
another VT or serial terminal or even to another file? By using
the ">" or "

Some examples:
        cat filenamehere>>anotherfile
        
        

 This one will add the contents of one file to another file, as
 in chapters 1 and 2 could be added together for reasons of
 continuity to make a fluid read that would otherwise be broken
 up by having to cat the successive chapters

        cat hellaracket.au >/dev/audio or /dev/dsp
        
        

 is another example of redirecting the output of a command or
 file to somewhere other than standard output which is another
 way of saying your monitor.




 Another feature is command line batching of commands. If you
 type several commands separated by semicolons, each command will
 execute when the previous one exits. A good example, is:

      make config; make dev; make clean; make zImage



 which will perform each of the steps necessary to compile a
 kernel. As soon as the first command exits or is closed, the
 next one starts  Any group of commands that you would like to run in
 succession can be done in this manner.




 Another device you can use to your advantage with a little
 imagination is the pipe, signified by the "|" symbol. Pipe is a
 pretty good description of what it does, which is to "pipe" the
 output of one command into another command for further
 processing. One example that springs to mind is

    cat filename | pr -l56>/dev/lp0



 which come to think of it, is another example of redirection as
 well. The above command takes the results of the cat command
 pipes it to a filter "pr", and redirects the output to /dev/lp0
 to print a file in a reasonably attractive manner. For some of
 the options available to "pr", try

    man pr



 This filter is particularly useful if you find lpr to be beyond
 your present capability, as I have :(. You should be aware
 however, that this will only work as root, or with a lot of
 permission hacking, which is probably best left undone, as it can
 cause security problems if /dev/lp0 is made available to regular
 users.






  __________________________________________________________________________

    *That terminal finally works!! What worked:
 If you have been
reading this column for a while, you might recall I mentioned a
vt 220 that I couldn't get working. I got impatient and got rid
of it. but sometime later I ran into a wyse 150 and decided to
try it again. This time I hit paydirt, thanks to a member of the
Kalamazoo Linux Users Group, Scott Yellig. The magic bullet was the
letter -L which was unreported in the serial HOWTO, but Scott is
pree sharp at that stuff.When used in the /etc/inittab (Slackware)
this line,

    s2:12345:respawn:/sbin/agetty -L 9600 ttyS1 vt100



if modified to reflect the serial port used, in this case com
port 1 in DOS lingo. This line can also be used with a 8086 or
above to emulate a serial terminal, if used with the proper cable.
The proper cable, usually called a null modem, is often sold as
a serial printer cable.


A serial terminal is a very good option when used with a Linux box
as it allows more than one user on the system at a reasonable cost
compared to buying another computer. The local university surplus
disposal has them for about $25US, and you may find them for free.
8086, 8088, and 286 boxes, which will also serve the purpose can
be gotten just as cheaply, depending on what hardware is attached.
The other thing you need is a comm program, Minicom and Kermit
are two that spring to mind or perhaps Seyon if you're in X. I've
never used any of these programs to connect directly to another computer as a t
erminal
without a modem, so I don't know much about connecting with
minicom in this manner, but Kermit seems to be pretty simple in
this capacity
Another use is to kill frozen X applications. I had a Netscape bus
error problem before I got Andreas Theofilu's nets ,
and a terminal can be used to kill out of
control processes quite easily, by logging in and using kill or
similar(remember die?)command to wax it and you can regain
your X session. Nearly any non-graphical task you can do on the
console can be done on a serial terminal. One exception, virtual
terminals can be worked around to a degree by usingsplitvt
which cuts your screen into two parts and by using

   CTRL-W

you can switch between the upper and lower displays, and work
alternately between the two, with the added advantage of seeing
both screens at once. You can even be root on one while using a
different account on the other screen, easily cut and paste from
one editting session to another, check top or ps
or many administrative tasks that require monitoring. It ain't
X but it's pretty good for a text only environment.

                             troll@net-link.net
                                      
                            See you next month!



  __________________________________________________________________________


                        Copyright  1998, Mike List
           Published in Issue 25 of Linux Gazette, February 1998
                                      




  __________________________________________________________________________


[ TABLE OF CONTENTS ]
[ FRONT PAGE ]
Back
Next 

  __________________________________________________________________________



    "Linux Gazette...making Linux just a little more fun!"



  __________________________________________________________________________




                     Confessions of a Former VMS Junkie
                                      
                       One Techie's Journey to Linux
                                      
                           By Russell C. Pavlicek
                                      


  __________________________________________________________________________



Once upon a time, in a land far, far away...


Someone once told me that phrase was the perfect way to begin a story with a
happy ending.  If so, then I am inclined to employ it here.


It has been over 20 years since my first programming experience.  An
ASR-33 Teletype with a paper tape punch attached to an acoustic coupler (do
they even tell today's Computer Science students about the joys of a 110 baud
acoustic coupler?) would whir, clunk, chunk, and ding as it magically made my
dry, clinical code come to life and perform wonderful tasks!  Amazing!  And, I
was told, the wondrous machine miles away on the other end of the telephone
could not only breath life into my coded creations, but it could simultaneously
do likewise for dozens of other aspiring Dr. Frankensteins who, like me, wanted
to see dry, dead algorithms transformed into living, breathing computer
creations.


That's how it all started.  In retrospect, it involved a dreary little teletype
in a bleak little room connected to a slow little coupler (for you recent CS
grads, that's a modem that connected to a phone using an acoustic cradle rather
than today's direct modular phone wire) connected over a telephone line to
a computer that probably didn't have the computational power of a modern
programmable pocket calculator.  By today's standards, it was a trivial
computing experience.  But it shaped my perspective on computing forever,
because that ancient assembly of antique parts could not only perform
computations, but it could support multiple concurrent users.  It did something
that those of us with grey in our hair used to refer to as "timesharing".


When I went to college, I was exposed to and learned the internals of a DEC
PDP-11/34 running the RSTS/E operating system.  Another fine timesharing
operating system, RSTS/E happily supported an entire campus population with
a mere 124K words -- just 248K bytes! -- of usable memory and 12.5M bytes of
hard disk storage!  But this Resource Sharing Time Sharing / Extended system
made each user feel like they had a whole computer at their beck and call.
It was a marvelously reliable workhorse that ran for days without crashing,
even while hordes of unthankful students stretched it to its very limits on
a daily basis.


Soon after I entered the business world, I met another highly impressive
operating system.  It was called DEC VAX/VMS.  It was an iron horse of a
operating system that was seemingly massive in its internal complexity, yet
uniform in its appearance.  When properly tuned, a VAX/VMS system could
satisfy the needs of dozens or even hundreds of concurrent users for months
on end.  Even now, Digital's OpenVMS (the current incarnation of VAX/VMS)
can run for years between reboots faithfully servicing the needs of its
users.


It was here that I settled down.  It was here I dug in.  Nestled safely in
the FABs and RABs and QIOs of OpenVMS internals, I settled in for a long,
comfortable stay.  Where else would a programmer rather go?  Here was
reliability.  Here were strong multiuser capabilities.  Here were
documented system calls...  uniform presentation...  true upgradability...
all found in a system that just wouldn't quit!


I was home!


Yes, I knew there was more out there.  There were all those mainframes.
But who the heck wanted to work with IBM?  They were on top.  They were
the Big Corporate standard.  They were the "safe choice".  What fun
was that?


Then, there was Unix.  Or, shall I say, the plethora of Unix-like systems.
Each different.  Each ugly.  Commands that made no sense.  Non words like
"grep".  What's a "grep"?  Editors named after people's initials.  Uck.
Phewy!  Give me commands like SEARCH and EDIT any day.


Then, of course, came the ground swell which was dubbed the "PC revolution".
Here, at last, was computing for the common man.  You could have your own
system with your own software to do your own work.  Magnificent concept, but th
e
tools... yow!  The popular PC operating systems were so anemic.  Remember,
these operating systems were responsible for the word "reboot"
entering common speech.  They were lucky if they could accomplish one thing
at a time, let alone serve the needs of hundreds of people simultaneously.


Yes, color and sound became standard through the PC influence, but so did
the notion that an operating system could have a nervous breakdown whenever
it pleased.  With the introduction of these systems into the business realm,
the bar of technical excellence for operating systems plummeted to
previously unimagined lows.  Amidst the growing cry for open standards, the PC'
s
proprietary operating system with undocumented system calls inexplicably
soared in
popularity.  Suddenly, interface was everything.  Reliability was nothing.


Yet, though I tinkered with the PC at home, I was happy to continue my work wit
h
solid, feature-rich OpenVMS.  Then, one day, it happened.  I was attending
training on migrating software from OpenVMS to Unix (ugly though it was, at
least Unix was a product of people who
knew what it meant to have a reliable operating system).  I picked up a
mail order catalog and there was an ad for an inexpensive PC-based Unix called
Linux.  I passed it around during class and by the end of the training
session, there were several people intending to purchase this product as a
means of brushing up on Unix skills.


That's how I came to use Linux.  After the class was over, I ordered a copy
of Yggdrasil
Plug-and-Play Linux (Nov 1994; kernel version 1.1).  At first, I created an
80 MB partition on my 386SX/40 and ran most of the operating system off of
the CD.  The few people I found who knew of the operating system said it was
"still a bit buggy, but cool".  I quickly found out that a "buggy" Linux was
still more stable than the more "mature" PC operating systems I had been
fiddling with.


One of my first practical uses for Linux presented itself during a 2 week
intensive training course I needed to attend.  As I wanted to touch base
with my wife daily, but knew that the schedule could make it difficult for
us to connect on the phone, I decided to set up my little Linux box as a
mail server during the training.  I created a turnkey account and menu for
my non-technical wife to create and read mail messages on the box at home,
while I would compose my mail messages on my laptop and dial in to my home
system to upload and download my mail.  Much to my amazement, my limited
little 386 turned out to be a marvelous little mail hub.  This lowly little
box, which many would dismiss as having insufficient resources to perform
any serious computing, was suddenly transformed into a true multiuser system
which easily handled the task of being a miniature mail hub!


I soon discovered that there were familiar friends available to help me get
acclimated to my new O/S.  On the Web, I found Anker Berg-Sonne's
 SEDT 
editor to give the EDT emulator I desired.  I also found source code for an
implementation of the TECO editor which compiled nicely under Linux.  Suddenly,
I was ready to give programming a try in this "new world" I had discovered.


The robust GNU C compiler proved to be a rich engine for developing software.
Coupled with the XFree86 software that provides the standard X windows
interface, I soon found that the Linux environment was a splendid development
platform for producing some 3D object rotation software that was requested
by one of my clients.  Even though the target system was an OpenVMS workstation
,
I found that I could port the software I developed under Linux by simply
changing a couple of #include directives.  Wow!  I now had the ability to
create and run workstation software on a low-end PC!


But that was only the beginning.  Soon, I upgraded my system
and made the strategic decision to allocate a large portion of my new disk
drive to Linux.  That is one decision I have never regretted.  The operational
advantages of my new platform were becoming more and more significant.


Like any PC, my Linux box enjoyed numerous inexpensive hardware options.
Yet, unlike
most PCs, this operating system could really perform multiple tasks
simultaneously.  And, unlike most PCs, I didn't have an operating system that
needed constant rebooting.  I could develop and run software based on open
standards without having to focus on proprietary system calls.  I could employ
a TCP/IP stack that was sure and solid.  And, I had
the power of a true multiuser, multitasking operating system.


Then came the 1997 Atlanta Linux Showcase.
I talked my manager into letting
me attend it as a training event.  Suddenly, I was surrounded by hundreds of
people who were even more enthusiastic than I.  Amidst the technology and
training, there was passion and conviction.  I discovered that Linux wasn't
merely the pleasant pastime of a few hackers; it was the growing wave that was
beginning to wash over the beaches of corporations worldwide.  Listening to
the impassioned appeals of people like maddog Hall, Eric Raymond, and
Robert Young, I was affected.  The software paradigm was changing, and I had
to find my place in this new world.


At work, I liberated an old 486 languishing in a corner and turned it into
a intranet web server.  It had been considered too weak for most "serious" PC
applications, yet it has plenty of horsepower to serve as my personal
workstation, intranet ftp server, and intranet web server.  Its intranet web
pages are dedicated to Linux advocacy, attempting to convey, convince, and
convict folks within the corporation that Linux is a new market that will
not be ignored.  In its first
6 months of operation, the server has processed requests for over
3300 HTML pages.  In all that time, the system has never crashed due
to software (we had a power outage once), and at one point the system
exceeded 10 weeks between reboots (I have had to shut it down for
hardware upgrades and environmental reasons).


I have used Linux to develop software for US government customers, both on
site and off.  It has proved to be an extremely capable development platform
for software destined for OpenVMS, Digital UNIX, and even Windows NT.  Linux's
adherence to industry standards makes it an excellent base for designing
portable software.  Plus, the addition of exciting technologies like
KDE and GNOME bring the concept of a user-friendly desktop to a
POSIX-compliant system.  Who could imagine the day of a sharp looking Unix
desktop that even the most hesitant end-user could conquer?


Today, Linux is my preferred platform, both at work and at home.  I still
have a deep fondness for the robustness of OpenVMS, but I relish the
possibilities of an operating system that can scale from a lowly
386 to a networked army of thundering Alphas.


I do not know all that is ahead for Linux, but I'm tempted to invoke the
normal conclusion for all good stories:


... and they lived happily ever after!




  __________________________________________________________________________


                   Copyright  1998, Russell C. Pavlicek
           Published in Issue 25 of Linux Gazette, February 1998
                                      




  __________________________________________________________________________


[ TABLE OF CONTENTS ]
[ FRONT PAGE ]
Back 
Next 

  __________________________________________________________________________



    "Linux Gazette...making Linux just a little more fun!"



  __________________________________________________________________________




                                EMACSulation
                                      
                              By Eric Marsden
                                      
  __________________________________________________________________________



 [INLINE]

   This column is devoted to making the best use of Emacs, text editor
   extraordinaire. Each issue I plan to present an Emacs extension
   which can improve your productivity, make the sun shine more
   brightly and the grass greener.

  __________________________________________________________________________


 Jka-compr is a package written by Jay K. Adams which allows
    Emacs to handle compressed files transparently. When you open a
    compressed file, Emacs will automatically decompress it before
    displaying it. If you make changes and save the file, it will be
    compressed transparently before being written to the disk. To
    enable jka-compr, just add the following line to your emacs
    configuration file (normally called ~/.emacs) :

    (require 'jka-compr)


 jka-compr works by looking at the filename extension, and in its
    default configuration recognizes .gz (gzip), and
    .Z (compress) files. It also recognizes the extension
    .tgz and unzips tarballs before passing them to tar-mode,
    which lets you look inside tar files. If you use other compression
    programs you can tell Emacs about them too, for example to use
    Julian Seward's bzip2
    (faster and slightly better compression than gzip, under GPL) you
    could add the following to your .emacs (before
    loading jka-compr)

    (setq jka-compr-compression-info-list
      '(["\\.Z\\(~\\|\\.~[0-9]+~\\)?\\'"
         "compressing"    "compress"     ("-c")
         "uncompressing"  "uncompress"   ("-c")
         nil t]
        ["\\.tgz\\'"
         "zipping"        "gzip"         ("-c" "-q")
         "unzipping"      "gzip"         ("-c" "-q" "-d")
         t nil]
        ["\\.gz\\(~\\|\\.~[0-9]+~\\)?\\'"
         "zipping"        "gzip"         ("-c" "-q")
         "unzipping"      "gzip"         ("-c" "-q" "-d")
         t t]
         ["\\.bz2\\(~\\|\\.~[0-9]+~\\)?\\'"
          "bzipping"      "bzip2"        ()
          "bunzipping"    "bzip2"        ("-d")
          nil t]))



  How does it work?


 Packages like jka-compr are written in Emacs Lisp; you can read
    the source code in the directory
    /usr/local/lib/emacs/${VERSION}/lisp/jka-compr.el for GNU
    Emacs, or
    /usr/local/lib/xemacs-${VERSION}/lisp/packages/jka-compr.el
    for XEmacs users (if you are using a Red Hat Linux distribution,
    you need to install the emacs-el package to see the source
    files). How can they change the behaviour of Emacs at such a low
    level as reading and writing files? The answer comes from the
    concept of hooks.

 Most of Emacs' low-level functions (which are written in C) have
    an associated hook, to which user-level functions (written in
    Emacs Lisp) can be attached. Hooks are fundamental to the
    customizability of Emacs, allowing users to override default
    behaviour in ways that its developers could not have imagined.
    Hooks are explained in the Emacs and Elisp manuals, which are
    available online from within Emacs by typing C-h i
    (or from the Help menubar or (blech!) the XEmacs toolbar).

 As an example of using a hook, the after-init-hook is
    run right after Emacs is lauched and has loaded your
    initialization file. Let's say you want Emacs to tell your fortune
    each time you start it. Just add the following lines to your
    .emacs :


   (add-hook 'after-init-hook
      (function
       (lambda ()
         (pop-to-buffer (get-buffer-create " *Fortune*"))
         (shell-command "fortune -a" t))))



  Next time ...


 In the next issue I'll discuss ange-ftp, which lets Emacs
    see the Internet as a huge virtual filesystem. Please contact me
    at <emarsden@mail.dotcom.fr> with comments,
    corrections or suggestions. C-u 1000 M-x hail-emacs !

 PS : Emacs isn't in any way limited to Linux, since
    implementations exist for many other operating systems. However,
    as one of the leading bits of free software, one of the most
    powerful, complex and customizable, I feel it has its place in the
    Linux Gazette. Don't forget, Emacs makes
    all computing simple :-)



  __________________________________________________________________________


                       Copyright  1998, Eric Marsden
           Published in Issue 25 of Linux Gazette, February 1998
                                      




  __________________________________________________________________________


[ TABLE OF CONTENTS ]
[ FRONT PAGE ]
Back 
Next 

  __________________________________________________________________________



    "Linux Gazette...making Linux just a little more fun!"



  __________________________________________________________________________




                           Gathering Usage Stats
                                      
                             By Randy Appleton
                                      


  __________________________________________________________________________



  Intro

Here in the Linux Laboratory at Northern Michigan University, we have quite
a few users and quite a few computers for them to use. It is important
for laboratoies like us to quantify usage. This
data can be used to justify expansion of a computer laboratory, describe
who is actually using the machines, which machines are being used,
or just satisfy simple curiosity.

Being the curious type, I sat down to write a program that would gather
usage information. The information I wanted includes:
     * How much time each user spends online.
     * How much time each computer spends being used.
     * How often the computer is up.
     * User total usage time divided by weeks (to see long term trends).
     * User total usage time divided by day for the last couple of days
       (to see current trends).


  Methodology

My first thought was to just stick my head in at odd times and count users.
But for such a strategy to work, I would have to count users at various
times in the day, including times I might not otherwise be inclined to
visit the lab (like early mornings). Further, I would miss users
using the lab remotely, over the internet.

My second thought was to use the "w" command. This command reads
a log file (normally /var/log/wtmp) and produces a line of output for every
logon event in the past, describing who was logged on and for how long.
My hope was that a summary of this information would provide the usage
statistics I was looking for. Unfortunately, this command does not
produce foolproof output. If the machine crashes while someone is
logged on, then "w" will sometimes produce the wrong total time online.
Even worse, if a person is logged on but idle, this idle time still counts
as usage as computed by "w".

Counting idle time was unacceptable to me. We have several
users with computers in their offices, and they are essentially logged
on 24 hours per day 7 days per week. Their usage is nowhere near
this level (yes, even college professors go to sleep!)

Luckily , there was an alternative to "w". The easiest way to
find out who is currently logged onto a computer is to use finger, a program
designed for just this purpose. The command "finger @hostname"
will describe who is logged on to "hostname", and how long since they actually
typed a command (i.e. finger knows their idle time).

Finger produces a header line, and the one line for every person logged
on. Eliminating the users with a high idle time will provide a list
of users who are using the computer at any given moment. A log file
of such lists, gathered at regular intervals, will describe usage over
the time the log file was gathered.

There is an important statistical assumption here. We assume that
a set of entries will accurately describe usage over the whole time period,
not just the precise moments when those entries occur. For
this assumption to be valid the entries should be gathered at regular intervals
.

  Defining Usage

The other complicated issue is to define usage. Often a single computer
will have several users logged on simultaneously, and often a single user
will be logged on to multiple computers at once (as I am now). It
becomes important to carefully define usage in these cases. I adopted
the following definitions.
     * A computer is in use if and only if there is at least one user
       using that computer.
     * A user is logged on if and only if the user is logged onto at
       least one computer.
     * A computer is up if and only if it responds to the finger command
       at all, and is otherwise down. Note that a computer that is
       currently running Windows will NOT respond, and will therefore be
       counted as down (which makes sense to me!).

Given these definition, it becomes important not double count users where
they are logged in more than once, and to not double count computers when
they have more than one user. Correct programming eliminates these
double countings (see the source code below).

  The Log file

The log file contains a series of records, each one of which is a description
of the results of running finger on the set of hosts. The size of
each entry is minimized, since many entries will be gathered yet the log
file should remain modest in size. The top of each entry contains the date
and time the entry was gathered, which is important for gathering time
and date based statistics. The log file entry below shows that it
is 11 45 in the evening on 10/11/97, and that I am the only one logged
in besides root. Root and I are using the computers ogaa and ogimaa.
Also shown is that the computer nigig is down, since it is not listed at
all.
   Date 97 10 11 23 45
       Host ogimaa 1
       Host bine 0
       Host gaag 0
       Host makwa 0
       Host mooz 0
       Host zagime 0
       Host ogaa 1
       Host euclid 0
       Host euler 0
       Host fermat 0
       User randy
       User root
       Total 2 users


  The Program

The program is named fingersummarize, since its job is to summarize a set
of results from the finger command. It is written in Perl, since
Perl offers wonderful support for associative arrays (where the usage stats
are stored) and working with strings (from the log file and the output
of finger).

There are two basic tasks of fingersummarize. These functions could
easily be done with two separate programs, but I find it easier to have
one program with options rather than two executables.
     * It should gather finger results, and store them in a log file.
       (fingersummarize -probe)
     * It should read the log file and produce the usage statistics.
       (fingersummarize -print)

Fingersummarize can be installed easily. Just follow the instructions
below.
    1. Copy the executable to someplace on your system, such as
       /usr/local/bin.
             cp /tmp/fingersummarize /usr/local/bin; chmod 755
       /usr/local/bin/fingersummarize
    2. Edit the top of the executable so that fingersummarize will probe
       your machines instead of mine. This should be very easy to do.
                     vi /usr/local/bin/fingersummarize
    3. Make a blank log file and put that log file somewhere. Often
       /var/log/fingersummarize is a reasonable place.
             echo > /var/log/fingersummarize; chmod 600
       /var/log/fingersummarize
    4. Install a line in cron so that fingersummarize will run in probe
       mode at regular intervals. Below is the line I use, which runs
       fingersummarize every fifteen minutes for every hour.
                      0,15,30,45 * * * * /usr/local/bin/fingersummarize
       -probe >> /var/log/fingersummarizelog

That's it. Now, whenever you want to see a current summary of the
usage data, just run

fingersummarize -print < /var/log/fingersummarizelog

  Example Output

Here is some sample output. A current example for my lab can he had
at http://euclid.nmu.edu/fingerprobe.txt
. The executable itself can be had at http://euclid.nmu.edu/~randy/Papers/finge
rprobe
. Note that the total number of hours computers were in use (12.8
hours/week) exceeds the total number of hours that people were using computers
(10.8hours/week). This just means there were times that some person
was using more than one computer at a time. Also, note that the useage
spikes at 10am, since a particular class sometimes meets in the lab at
10am.




 Stats by user
User    Total   Usage   Hours
Name    Observ. Percent /Day
abasosh 47      4
0.42
agdgdfg 54      4.6
0.49
arnelso 7       0.6
0.06
bparton 2       0.1
0.01
bob     28      2.4
0.25
brandk  101     8.7
0.92
btsumda 37      3.2
0.33
chgijs  1       0
0
clntudp 1       0
0
daepke  2       0.1
0.01
dan     93      8
0.84
dfliter 17      1.4
0.15
gclas   43      3.7
0.39
goofy   15      1.3
0.13
gypsy   2       0.1
0.01
jadsjhf 2       0.1
0.01
jbsdjh  2       0.1
0.01
jdefgg  2       0.1
0.01
jeffpat 6       0.5
0.05
jpaulin 7       0.6
0.06
jstyle  4       0.3
0.03
jstamo  17      1.4
0.15
jwilpin 37      3.2
0.33
jwilpou 79      6.8
0.72
kangol  39      3.3
0.35
matt    58      5
0.52
mhgihjj 8       0.6
0.07
randy   187     16.2
1.7
rbush   2       0.1
0.01
root    22      1.9
0.2
rpijj   2       0.1
0.01
sbeyne  17      1.4
0.15
sdajani 1       0
0
sdalma  28      2.4
0.25
ship    1       0
0
skinny  48      4.1
0.43
stacey  2       0.1
0.01
tbutler 35      3
0.31
tmarsha 5       0.4
0.04
tpauls  34      2.9
0.31
vladami 30      2.6
0.27
xetroni 26      2.2
0.23
---------------------------------
Overall 1151
10.24


Stats by Host
Host    Total   Percent Percent Hours
Name    Observ. Up
Busy   /Day
bine    131     100%
4.9%    1.194
euclid  152     100%
5.7%    1.386
euler   7       89.3%
0.2%    0.068
fermat  52      100%
2.1%    0.506
gaag    202     36.5%
7.6%    1.842
maang   118     100%
4.4%    1.076
makwa   77      100%
2.9%    0.702
mooz    92      100%
3.4%    0.839
nigig   81      100%
3%      0.738
ogaa    48      100%
1.8%    0.437
ogimaa  374     100%
14.2%   3.411
waabooz 28      100%
1%      0.255
zagime  38      100%
1.4%    0.346
------------------------
Overall 2551     94.2%  4.1%
12.807

 Stats by the Week
Week
User
Starting        Hours
97 10 04        74.5705816481128
97 09 28        55.9130434782609
97 09 21        64.7
97 09 14        113.023956442831


Last Two Weeks
Day      User
         Hours
97 10 11 7.05882352941176
97 10 10 16.75
97 10 09 4.25
97 10 08 1.5
97 10 07 5.25
97 10 06 8.25
97 10 05 13.8947368421053
97 10 04 17.6170212765957
97 10 03 9.91304347826087
97 10 02 0.75
97 10 01 1
97 09 31 12
97 09 30 9.75
97 09 29 12.75


Stats by the Hour
Hour    Avg Users
00      0.151
01      0.163
02      0.151
03      0.053
04      0.036
06      0.027
07      0.055
08      0.175
09      0.75
10      1.398
11      1.171
12      0.972
13      0.814
14      0.775
15      0.778
16      0.607
17      0.526
18      0.459
19      0.455
20      0.232
21      0.321
22      0.339
23      0.196







  __________________________________________________________________________


                      Copyright  1998, Randy Appleton
           Published in Issue 25 of Linux Gazette, February 1998
                                      




  __________________________________________________________________________


[ TABLE OF CONTENTS ]
[ FRONT PAGE ]
Back 
Next 

  __________________________________________________________________________



    "Linux Gazette...making Linux just a little more fun!"



  __________________________________________________________________________







  Welcome to the Graphics Muse


    Set your browser as wide as you'd like now.  I've fixed the Muse to
                    expand to fill the aviailable space!


                                1998 by mjh




_______________________________________________________________________________



  Button Bar

 muse:
    1. v; to become absorbed in thought
    2. n; [ fr. Any of the nine sister goddesses of learning and the arts
       in Greek Mythology ]: a source of inspiration

  W elcome
to the Graphics Muse! Why a "muse"? Well, except for the sisters aspect,
the above definitions are pretty much the way I'd describe my own interest
in computer graphics: it keeps me deep in thought and it is a daily source
of inspiration.

            [Graphics Mews][WebWonderings][Musings] [Resources]





 T his column
is dedicated to the use, creation, distribution, and discussion of computer
graphics tools for Linux systems.

The past two months have been quite busy for me.  First, I moved
from Denver to Dallas.  Yes - on purpose.  I grew up in
Texas and have many friends here.  I loved Colorado - its a beautiful
state - but I wasn't much of a cold weather fan and winters there could
get chilly.  More importantly, I missed my friends.  Hey, geeks
need friends too. [INLINE]
   So I'm back in Dallas now.  The move went well up
until I started to set my computers back up.  First, and before
I got the other systems unpacked, I blew the monitor on my laptop (aka
"kepler").  I have no idea what happened.  Its just dead.
Sigh.  Thats now an $1800 doorstop unless I can get NEC to fix
it for a reasonable price.  Suprisingly, I wasn't put off by this.
I started to get my main systems unpacked.  The first thing I did
was to bring up my primary system - "feynman", the one I do all my real
work on.  I plugged it in, turned it on.  It sprang to life
just as always.  Then, 15 minutes later - power spike.  You see,
this is a brand new apartment complex.  No one had ever lived here
before.  Apparently no one had ever plugged anything in here either.
That burnt plastic smell you've noticed was my Cyrix CPU and PCI chipset
waving bye bye.  $400 more.  I really need a cheaper hobby.
Anyway, things are finally back up and running.  More imporantly,
its all stable.  Through it all my Linux OS has performed fine.
Its the hardware that keeps kicking up dirt.  So much for commodity
items.
   Once life settled back to normal I got back down to business.
I had spent about a month away from serious nerd time during the move
and was feeling pretty refreshed.  Translated that means I should
have gotten my writing responsibilities done with immediately. Instead
I started playing around with the PalmPilot my brother gave me for
Christmas.  It wasn't a new one - I think he had it for about a year
- but its in perfect condition.  He knew I'd found some info on using
it with Linux previously and had mentioned that if I were to get a PDA (Persona
l
Digital Assistant), it would be the Pilot.  Well, I got one.
And its cool (no, not "kewl" - cool, as in "I'm over 30 now").  And
the tools available for Unix systems and the Pilot work great.  So
great I wrote an article about it.  Keep an eye out in a future LJ
for it.  Its cool.
   I also took on another programming task.  I decided,
for no particular reason I can think of, to begin scanning the bowels of
Gtk and to port my XPostitPlus (aka computer sticky notes for the
3M impaired) to a new widget set.  I really enjoyed it, mostly
because the port was very straight forward.  Gtk is quite easy to
use.  More so than Motif, although Gtk still has a way to go to be
as feature rich (mostly its missing simple convenience tools - or perhaps
they are there and I just missed them).  Anyway, I spent way
to much time on that.  Planning new features, testing some neat ideas.
Way too long.
   Which leads me to this months column.  Its nearly
midnight on January 29th.  I promised I would upload this issue by
tonight.  And I still wanted to do a section on XeoMenu, a Java-based
menuing system from JavaSoft.  Guess thats not going to happen.
On the bright side - I know what I can do for the Web Wonderings section
next month.
    In this months column I'll be covering that nifty
logo machine, Font3D, along with its side kick XFont3D.  Both are
terrific tools.  XFont3D is a fairly decent front end to Font3D which
you'll want to look at if you get seriously involved with creating 3D logos.
For this month, you'll want to view the Muse in something wider than 640
pixels.  Sorry, but to get the images in required a little extra width.
    Hopefully your holidays (if you had any) were good
and you're ready to get back into the fun stuff again.  I know
I am.  Hey, I even got approached about possibly being a
series editor for a set of Linux-related books.  Gee, I wonder what
topic I should emphasize....




  Graphics Mews


      Disclaimer: Before I get too far into this
I should note that any of the news items I post in this section are just
that - news. Either I happened to run across them via some mailing list
I was on, via some Usenet newsgroup, or via email from someone. I'm not
necessarily endorsing these products (some of which may be commercial),
I'm just letting you know I'd heard about them in the past month.



  indent






Play Video CDs with MpegTV Player


MpegTV is happy to announce that is
it now possible to play Video-CD's (VCD's) on Linux-x86 systems with MpegTV
Player 1.0 and xreadvcd.

MpegTV Player 1.0 is shareware (US$ 10)
for personnal and non profit use only. Commercial licenses are required
for commercial or governmental use.  xreadvcd
is a free utility developped by Ales Makarov (source code available).

For information and to download MpegTV Player and xreadvcd:
http://www.mpegtv.com/download.html

To receive announcement of new MpegTV product releases you can subscribe
to our mailing list:
http://www.mpegtv.com/mailing.html

Contact information: mailto:info@mpegtv.com
MpegTV website:      http://www.mpegtv.com

  indent


Xi Graphics announes Virge GX/2 support


Xi Graphics, Inc. announces support
for the Virge GX/2 in their Accelerated-X
Display Server v4.1 for Linux, FreeBSD, BSD/OS, Sun Solaris/86,
Interactive, Unixware, and SCO OpenServer V.  XiG has full 2D acceleration
in all color depths and resolutions.  XiG also supports hardware gamma
correction.

For current users of Accelerated-X Display Server v4.1 there is now
an update_4100.016 on their FTP site which contains new support for the
Virge GX/2 (AGP & PCI) video cards, this update includes specific support
for the Number9 Reality 334 video card. The update also contains
enhanced support for the previous Virge GX and DX video cards.

For a demo of the Accelerated-X Display Server v4.1 download the demo
and these updates:

ftp://ftp.xig.com/pub/update/

update_4100.016.tar.gz
and
ftp://ftp.xig.com/pub/update/

update_4100.016.txt
are the two files required to get this support.  The update_4100.016.txt
file has installation details.

If you have a graphic card with troubled support contact XiG. They may
have a server that fixes your problems.
Xi Graphics, Inc.  800.946.7433
303.298.7478



  [INLINE]

  [INLINE]




TrueType to Postscript font converter


Andrew Weeks has written a program to convert True Type fonts to Postscript,
so Linux users can use the TT fonts that come with Windows.

See http://www.bath.ac.uk/~ccsaw/fonts/
Comments/Problems to:
Andrew Weeks
Bath Information & Data Services
University of Bath
email: A.Weeks@bath.ac.uk



OpenGL Widget for Gtk


gtkGL version 0.2 is a function/object/widget
set to use OpenGL easily with GTK. gtkGL includes gdkGL; GLX wrapper.

List of current archives appears to be at
http://www.sakuranet.or.jp/~aozasa/shige/

doc/comp/gtk/gtkGL/files-en.html.
The current version appears to be
http://www.sakuranet.or.jp/~aozasa/shige/

dist/gtkGL-0.3.tar.gz

_______________________________________________________________________________

MindsEye mailing list archives


http://mailarchive.luna.nl/mindseye/




  [INLINE]



Freedom VR 2, a Quicktime VR viewer


Paul A. Houle announces the release of Freedom
VR 2,  a Java applet  that works like a Quicktime
VR object movie.  Freedom VR 2 is a solution for photographic VR that
can be viewed on any platform for a Java  enabled web-browser,
including Linux as well as other forms of Unix, Mac OS,  OS/2,
Windows and more.  Because it's based on open standards  such
as .gif and .jpg,  you can create Freedom VR content on any platform
as well.  Freedom VR 2 is released under the GNU public license so
it's free and source code is available.

Freedom VR 2 adds many features to Freedom VR 1 -- it's now possible
to embed hyperlinks in your VR scenes as well as to make scenes with two
dimensional navigation -- where you can drag the object up and down as
well as left and right.  Users can now navigate via the keyboard,
and Freedom VR 2 can now be controlled by Javascript.  In addition,
Freedom VR 2 has some improvements in cross-platform performance.

Freedom VR 2 is easy to use;  many people have already made great
content with Freedom VR 1 -- to encourage people to use Freedom VR 2,
we're sponsoring a contest.  We're giving away a free virtual pet
to the person who submits the best VR model before December 15, 1997.
Take a look at http://www.honeylocust.com/vr/

Editor's Note:  Ok, so I didn't get this out in time for the contest.
My apologies.




  [INLINE]






Brother HL 720 Laser Printer driver for Ghostscript


P.O. Gaillard wrote a Ghostscript driver for the Brother
HL 720 laser printer. He submitted it to Aladdin Enterprises
and it should be included in upcoming versions of Ghostscript (i.e. the
ones coming AFTER 5.10).

This driver is completely free from copyrights by Brother or Microsoft
(the printer is not a true WPS printer, which is why he could obtain documentat
ion).
You should note that such documentation is not available for Oki and Canon
(LBP 660) printers which prevents writing drivers for them.

Some facts about the driver and the printer
  = The printer is a 600dpi, 6 ppm , $300 printer
  = With ghostscript you can print at approximately 5 ppm
  = It took less than 50 hours to develop the driver

People (especially maintainers of Ghostscript packages for commercial
distributions) who want to use the driver with gs3.33 can contact Mr. Gaillard
and he will send them a patch. (The patch has already been posted in fr.comp.os
.linux
a few months ago). Maybe normal users can wait for Debian and Red Hat packages.


P.O. Gaillard

Ed. Note:  this was an old announcment from comp.os.linux.announce.
I don't have any other contact information except for the email address.
_______________________________________________________________________________

VARKON V1.15C


VARKON is a high level development
tool for parametric CAD and engineering applications developed by Microform,
Sweden. Version 1.15C of the free version for Linux is now available for
download at:
http://www.microform.se

For details on what's new in 1.15C check:
http://www.microform.se/userinfo.htm

Johan Kjellander, Microform AB
http://www.microform.se (VARKON/English)

  [INLINE]


Awethor - Java Based authoring tool


CandleWeb AS is proud to announce a new Java based authoring tool called
Awethor.  Awethor strives
to meet the needs of web authors when it comes to designing and creating
graphics for the Web. As the Awethor system uses vector graphics rather
than bitmaps, users can create and publish large scale drawings and animations
in small files, thereby avoiding the large download times traditionally
associated with large web graphics and animations.

The output of Awethor can be run in any browser that supports the Java
language. Awethor typically outputs two files :
    1. A file containing the presentation in the QDV (Quick and Dirty
       Vector graphics) format. QDV is optimized for the Web, and
       graphics in this format have a fraction of the size compared to
       similar graphics in GIF or JPEG.


    1. An HTML-file example with the correct parameters for incorporating
       the QDV graphics into regular HTML-files. In addition, a standard
       Java applet driver for QDV is used. The size of the applet is
       about 13K, so it is loaded quickly (and automatically) and you may
       reuse the same applet on multiple QDV files.

Here is a short summary of the features of Awethor :
     * Creates animations and vector graphics that scales for use on the
       web.
     * Drawing of rectangles, arcs, lines, polygons, splines, images and
       text are suppported.
     * Full featured WYSIWYG vector based drawing tool.
     * Integrated HTML based help system.

Awethor may be downloaded from the CandelWeb web site :
http://www.candleweb.no/






  [INLINE]



FREEdraft - 2D drafting system for Linux/Unix/X.


FREEdraft is under development.
It is not yet in any sense ready for production work. It may be useful
if you are interested in constraint syntax modeling, or are just the curious
type.  Currently FREEdraft consists of a viewer, a dynamically loadable
grammer/menu/command system, some geometry types and a library of 2D plane
and cad mathematics.

FREEdraft is licensed under the GPL.  Feedback is appreciated.
The source code and a screen shot is available from http://www2.netcom.com/~iam
cliff/techno.html




  [INLINE]



Announcing The WebMagick Image Web Generator Version 1.39


New in this release: a 100% JavaScript interface!

WebMagick is a package which makes putting images on the Web as easy
as magick.  You want WebMagick if you:
    1. Have access to a Unix system
    2. Have a large collection of images you want to put on the Web
    3. Are tired of editing page after page of HTML by hand
    4. Want to generate sophisticated pages to showcase your images
    5. Like its interactive JavaScript based interface
    6. Are not afraid of installing sophisticated software packages
    7. Want to use well-documented software (40 page manual!)
    8. Support free software

After 12 months of development, WebMagick is chock-full of features. WebMagick
recurses through directory trees, building HTML pages, imagemap files,
and client-side/server-side maps to allow the user to navigate through
collections of thumbnail images (somewhat similar to xv's Visual Schnauzer)
and select the image to view with a mouse click. In fact, WebMagick supports
xv's thumbnail cache format so it can be used in conjunction with xv.

The primary focus of WebMagick is performance. Image thumbnails are
reduced and composed into a single image to reduce client accesses, reducing
server load and improving client performance. Everything is either pre-computed
or computed in the browser.

Users with JavaScript-capable browsers (Netscape 3 or 4 & Internet
Explorer 4) enjoy an interface that minimizes accesses to the server. Since
HTML generation is done in the brower, navigation is much faster and more
interactive.

During operation WebMagick employs innovative caching and work-avoidance
techniques to make successive executions much faster. WebMagick has been
successfully executed on directory trees containing hundreds of directories
and thousands of images ranging from tiny icons to large JPEGs or PDF files.

Here is a small sampling of the many image formats that WebMagick supports
(48 in all):
     * Acrobat (PDF)
     * Encapsulated Postscript (EPS)
     * Fig (Xfig format)
     * GIF (including animations)
     * JPEG
     * MPEG
     * PNG
     * Photo CD
     * Postscript (PS)
     * TIFF
     * Windows Bitmap image (BMP)

WebMagick is written in PERL and requires the ImageMagick (3.8.4 or later)
and PerlMagick (1.0.3 or later) packages as well as a recent version of
PERL 5 (5.003 or later). Installation instructions are provided in the
WebMagick distribution.

Obtain WebMagick from the WebMagick page at http://www.cyberramp.net/~bfriesen/
webmagick/dist/.
WebMagick
can also be obtained from the ImageMagick distribution site (or one
of its mirrors) at ftp://ftp.wizards.dupont.com/pub/ImageMagick/perl/.



  [INLINE]



    Did You Know? [INLINE]

...the POV-Ray Texture Library 3.0 has its own domain now?  Check
outhttp://texlib.povray.org/.

    Q and A

Q:  Is the Gimp licensed under the GPL or the LGPL?
Does it make a difference?

A:  Actually, I'm not completely sure about the legal differences,
but I'll tell you what I know and how I interpret it.  First, the
Gimp core program is licensed under GPL.  The Plug-Ins (as of the
0.99.18 release) are licensed via the Gimp API library they use which is
called libgimp.  This library is licensed under the LPGL.
GPL - the GNU General Public LIcense - provides that the program may be
modified and distributed by anyone as long as the changes are distributed
with the source.  This means, I believe, that you can sell the Gimp
if you want but that you need to distribute it with the source code, including
any changes you may have made to the program.  It also means that
the code in the Gimp's core cannot be incorporated into proprietary programs
- those programs would have to fall under the GPL if they used any of the
Gimp's source code directly.

The Plug-Ins differ from this in that they can be commercial applications,
distributable without source code.  They link against libgimp (and
the Gtk libraries, which are also LGPL'd) but do not use any of the core
Gimp code directly.  The LGPL  appears to cover the libraries
distribution rights, but allows proprietary programs to link against the
library with certain restrictions.

At least thats how I interpreted it.


  [INLINE]



Reader Mail


hixson@frozenwave.com wrote
(way back in November):
   I've recently written 3 Perl scripts which help to distribute the task
       of rendering with povray between several cpu's.  One script is for
       SMP (multiple processor) machines.  It will break an image into
       halves and start a separate process for each.  This utilizes both
       CPU's in a dual proc machine, and nearly halves the rendering
       time.  The other two scripts work together to utilize multiple
       machines on a network.  The server script tells each client script
       how much of an image to render (also sending the .pov file and any
       necessary files to each client).
          These scripts were created using Perl 5.004, Linux 2.0.32, and
       POVRay 3.0. I'd be honored if you would like to include a link
       from your excellent graphics site to my page at
       http://www.frozenwave.com/~hixson/projects.html.

'Muse:  Not quite on my
LGH pages, but its a start.  I'll get it added to my LGH pages next
time I do an update (whenever I get a chance to do that).

In going through some old email, I found the following discussion which
took place in early November 1997 regarding the use of RIB shaders with
BRMT.  Being a little short on real subject matter this month, I thought
I'd share it with you.

Ed Holzwarth (eholzwar@MIT.EDU)
initially wrote:
   I'm trying to render some hypertextures using BMRT... To do this I
       need to be able to sample lights with illuminance() at an
       arbitrary point inside an object's volume.  Seems like the best
       thing to do that with would be an Interior volume shader, but I
       can't get it to work.  Here is some code that I wrote just to test
       out volume shaders. From the debugging printf(...)'s, I can tell
       that the Interior shader is being called, but it seems to have no
       effect on the image.  Any ideas would be greatly appreciated!
       Would love to see topics like this convered in Graphics Muse!
       Partial RIB code
       AttributeBegin
          Attribute "identifier" "name" [ "ball" ]
          Interior "shaders/hsin"
          Surface "shaders/trans"
          Translate 2 0 6
          Sphere 3 -3 3 360
       AttributeEnd
       .sl code
       volume hsin ()
       {
          if (sin (xcomp(P)) > 0)
          {
            Oi = .5;
            Ci = color (0,.8,0);
            printf(".");
          }
          else
          {
             Oi = 0.8;
             Ci = color (.5,0,0);
             printf("!");
          }
       }
       /* transparent shader */
       surface
       trans ()
       {
          Oi = .2;
          trace(P,normalize(I));
          printf("After : Oi = %c, Ci = %c\n",Oi,Ci);
       }
       

'Muse:  (Note - I'd love
to get back to BMRT.  I just have to learn to stop taking on so many
projects at once.)

 [INLINE] Hmmm.
I haven't been playing with BMRT for some time now and was no expert to
begin with, however I think the problem might be fairly straight forward.
I played with what you sent me by shoving it in a standard RIB that I use
to test objects and shaders.  I played with lots of settings in the
RIB for colors and opacity.  No real help there.  Then I tried
mucking with the two shaders.  Not much luck there.

So I thought about what the volume shader really does.  A volume
shader does not have a geometric primitive associated with it.  It
is bound to a  surface.  So thinking about this and looking at
how the surface was defined via the RIB and the surface shader I thought
"Gee, maybe the surface isn't of a type that can allow light to pass through
it very well, even if we've set the opacity low".  So I swapped your
surface shader with the BMGlass shader I got from a web site (or maybe
it was from Larry Gritz's pages, I've forgotten now - the shader was written
by Larry).

Success.  The effects of the volume shader are properly displayed
using the glass surface shader.  Or lets say the colors you'd expect
from the volume shaders impact are obvious and distinct.  The old
way, all I got was various forms of reflection from the surface.
Now I get the surface mixed with the volume shader effects.

I don't know if this is the correct solution to your problem, but I
think its a start.  The volume shaders effects are tightly bound to
how the light enters that volume, and that is determined by the characteristics
of the surface through which the light must travel.  Muck with the
surface characteristics (or use a clear glass shader if you don't want
the surface to play a role in the overall effect) first, then fiddle with
the volume shader.

Ed wrote back:
   Hmm. That is interesting.  Actually, yesterday I got the code to work
       by changing the order of things in the .rib file.  Also, the
       although the volume shader doesn't know about Os and Cs, Oi and Ci
       are already set to what the Surface shader has calculated for the
       surface hit points.  Also, the surface shader gets called twice,
       and then the Interior shader is called, and the length of I in the
       volume shader is the length of the ray inside the volume.  So
       anyway, here is a revised version of what I sent you previously;
       it now works as expected, but if you change the order of things in
       the .rib  file it seems not to work.  In the shader below, the
       color and opacity are based on the length of I, so the sphere
       looks 3D.  If you replace the interior shader below with, for
       example, the noisysmoke shader which comes with BMRT, you get a
       smoky sphere.  Pretty neat!
       Partial RIB code
       AttributeBegin
          Attribute "identifier" "name" [ "ball" ]
          Surface "shaders/trans"
          Interior "shaders/hsin"
          Opacity [0 0 0]
          Translate 1.9 0 6
          SolidBegin "primitive"
             Sphere 3 -3 3 360
          SolidEnd
       AttributeEnd
       Shader code
       /* transparent shader */
       surface
       trans ()
       {
          Ci = trace(P,I);
       }
       volume hsin ()
       {
          color Cv, Ov;
          if (sin (2*xcomp(P)) > 0)
             Cv = color (0,length(I)/8,0);
          else
             Cv = 0;
          Ov = length(I)/8;
          /* Ci & Oi are the color (premultiplied by opacity) and opacity
       of
            *the background element.
            * Now Cv is the light contributed by the volume itself, and
       Ov is the
            * opacity of the volume, i.e. (1-Ov)*Ci is the light from the
       background
            * which makes it through the volume.
           */
           Ci = Cv + (1-Ov)*Ci;
           Oi = Ov + (1-Ov)*Oi;

'Muse:  Neat indeed!

And another from the really old email category:

Rob Hartley <rhartley@aei.ca or
robert.hartley@pwc.ca> wrote:
   Bonjour from Montreal!

'Muse:  ...and howdy from
Texas!
   We are expecting a foot or more of snow today, so I decided to snuggle
       up to LG this morning until the roads are cleared.

'Muse:  Snow measured in
anything but millimeters is why I left Colorado.  Beautiful state,
but I lack the requisite tolerance for frigid winters.
   I wrote to you a while ago mentioning the availability of OpenInventor
       (OIV) for Linux from Template Graphics Software
       (http://www.tgs.com).  So far, it seems alright, but there are
       still a few things that I cannot get working at home that work
       just fine on my SGI at the office.  I have the book "The Inventor
       Mentor" which took a week for special order, but it was worth the
       wait.
       The problem with OIV is that it costs nearly a thousand dollars
       U.S.!  A bit much when I consider that I can get a whole new Linux
       box for that much, or for the price of a new souped up PC and OIV,
       we can get a second-hand SGI workstation which comes with Inventor
       pre-installed.
       So I scrounged the 'net a bit and found Links to the 'Apprentice
       Project' and 'Pryan'  which runs under the QT GUI library.  Both
       of these packages, available in source form, will read Inventor
       files, which is really nice, because Inventor files are/were the
       basis for the VRML 1.0 file definition.  This I find particularly
       handy for developing applications at work and at home.  At work we
       have a mix of SGI, AIX, HP, and Sun workstations pumped up and
       running Catia for our design group (we build gas turbine engines
       for jets, helicopters and commuter aircraft.)
       Which brings me to why I am writing:  In the Linux Gazette I
       noticed a query about: "...PC software product -- an interactive
       educational system -- what PC graphics package is "state of the
       art" for Linux or Windows?"  If I were tasked with developing an
       interactive 3D system that had to be run on Linux, Win'95/NT and a
       large variety of Unixen (Unixes, Unicses?), I  would be tempted to
       look further into the following:
       Open Inventor
        Solid, easy to use, multiplatform, but costly ( developer ~$1000,
            runtime starts at ~$75 (I think), and decreases with volume)
            http://www.tgs.com
       The Apprentice project (Inventor clone)
        Source is available from this link:
            http://users.deltanet.com/~powerg/Apprentice/
       Pryan (Inventor clone, requires Qt GUI listed below)
        Free software, source code distribution,
            http://www.troll.no/opengl/
       Qt
        Free software (commercial license also, but same code), source
            code distribution - http://www.troll.no


   Also note that most of the Addison Wesley OpenGL programming books,
       including:
        The Inventor Mentor
            Open GL Programming for the X Window System  (which covers
            GLUT)
            Open GL Programming Guide
            Open GL Reference Guide
       (and all the 'X' books, including Motif) are good references to
       have around, but they are also available in electronic format, in
       postscript PDF and hypertext format.  I would guess we have heard
       little of them because they are so big.  I know they exist because
       I have and use them online and on-paper.  If  needed, they would
       probably all fit onto a Zip disk.

'Muse:  I'm not certain
its legal to redistribute those texts, but it is nice to know they are
available in electronic format if desired.
   I would love to help out in any way I can.  Keep up the great work,

'Muse:  You already have!
Thanks for all this wonderful information!
   PS:  I can see a diversification of the realms of computer graphics
       between 2D and 3D.  Have you ever considered a 3D Graphics Muse?
       It is an exciting area that is really growing and I would enjoy
       seeing more attention paid to it.

'Muse:  Its not a bad idea
and there certainly is enough material to keep it going.  The only
problem is that I don't have the time to split between the two subject
areas (and a job, and other writing duties, and ...).  Of course,
if any readers would like to do a write up on either and have it included
with the Muse feel free to contact
me.  You will, of course, get full credit for your work.
The Muse is just another place for graphics fans to gather.
_______________________________________________________________________________


 [INLINE]
XeoMenu 1.1 from JavaSoft should have been here.
I just procrastinated.  If you want to get a head start on it,
take a look at http://java.sun.com:81/share/classes/menu/source/source.html.
Happy wonderings!
_______________________________________________________________________________






  Musings





  indent






Font3D and XFont3D


   One of the problems with using 3D graphics for logos is the
lack of good model data for the fonts.  A quick scan of the various
model banks, such as Viewpoint Datalabs Avalon
archives or 3DSite, finds very few
canned models of fonts.  Besides, do you really want to hang on to
a complete set of letters in a given font as model data?  After all,
how often will you be using X, Q or Z?  (Of course, cyberworld artists
probably use these all the time, but thats another story).

   Fortunately, this problem is easily solved using Todd Prater's
Font3D utiltity.  Font3D
is a tool for converting text strings using a given font into model data
which can be read by a variety of modelling programs and rendering utilities.
Output formats include support for POV-Ray (both 2.x and 3.x formats),
Raidance, Vivid, AutoCad DXF, Renderman RIB, and RAW Triangles.  The
model data can be generated using a healthy set of Font3D command options.
Features such as face textures, beveling of both front and back faces,
length of face and side cuts for beveling, and object positioning are provided.

Font3D supports both Macintosh and MSWindows TrueType font files.

   Font3D is, I believe, shareware.  The register.txt
file states it runs for $10US, although it doesn't state explicitly that
you need to register.  Since the files in the latest version, 1.60,
are dated with a January 1996 date, I suspect that either no new work has
been done on Font3D in some time or only registered users are getting updates.
Then again, once you've seen the breadth of command options avialable,
you might wonder what new features could be added.

   You can fetch the C++ source for Font3D from its primary
archives at  http://www-personal.ksu.edu/~squid/
font3d.html.  You can also fetch a slightly older version from
the POV-Ray archives at ftp://ftp.povray.org/pub/poray/utilities.
This latter version is th 1.51 version.  I'm not certain why, after
all this time, the 1.60 version has not been added to the POV-Ray archives.
Also note that the 1.51 release includes a large DOS and OS/2 binaries
in the zip file, along with the C++ source.  The 1.60 release broke
out the DOS and OS/2 binaries and includes only the source.

   The source for 1.60 comes in a zip file.  If, like
me, you are unfamiliar with C++, don't worry.  The Makefile provided
builds the source without modification.  There really isn't all that
much to the source, which makes dealing with the build all that much simpler.
The Makefile assumes you have GCC/G++ installed and in your path.
For Linux users this is pretty much a given, especially if you've installed
from one of the well known Linux distributions (Red Hat, Debian, SuSE,
Slackware, etc.).  Basically, just follow the installation instructions
for Unix systems that can be found in the font3d.txt file, or if you prefer,
in the font3d.ps document.

The code appears quite stable, producing usable code for both POV and
RIB (via BMRT) as well as DXF and RAW files that were parsable by the latest
version of the AC3D modeller.

   Font3D processes a specified string using a specified font
by parsing a set of commands.  These commands can be specified either
on the command line or in a configuration file.  Command options fall
into 8 basic categories:

                            Categories Commands
                         Fonts font, font-path, map
    Visibility faces, sides, bevels, front-face, back-face, front-bevel,
                                 back-bevel
       Texturing texture, face-texture, side-texture, bevel-texture,
        front-face-texture, back-face-texture, front-bevel-texture,
                             back-bevel-texture
       Beveling bevel-type, cut, face-cut, side-cut, front-face-cut,
                front-side-cut, back-face-cut, back-side-cut
        Object char, code, depth, resolution, string, triangle type
         Output coordinate-system, constants, format, name, output,
                           output-path, precision
                        Positioning xpos, ypos, zpos
                       Miscellaneous config, verbose

A config file can be used to specify commands.  The config
command can be used to specify the name of the config file or you can set
the FONT3D_DEFAULT_CONFIG environment variable:

For bash/ksh/sh users:
   FONT3D_DEFAULT_CONFIG=<path>/<config_file_name>
       export FONT3D_DEFAULT_CONFIG

For csh users:
   setenv FONT3D_DEFAULT_CONFIG <path>/<config_file_name>

If a path is not specified, the default config file (font3d.def) will be
searched for in the same directory from which you started Font3D.
Note that the FONT3D_DEFAULT_CONFIG variable specifies the path and file
name, not just the path, to the config file.

   Commands are formed as "name=value" pairs, whether they
are in the config file or on the command line.  If the "value" portion
of the command includes spaces it must be enclosed in double quotes.
This is probably only applicable to the string command, which is
used to specify the text for which the objects will be generated.

   By default Font3D uses POV-Ray as its preview renderer,
which means the default output file will be a POV-Ray include file.
Object naming is supported for POV objects, although no other output formats
allow for naming of objects.  Font3D also uses a right-handed coordinate
system by default.  This can be changed with the coordiante-system
command line option.  Note that POV-Ray, for example, uses a left
handed coordinate system. I would think it would make more sense to make
the default left handed since the default output is POV-Ray.  Strings
are generated by default, but you can specify a single character using
the char command.  You can also specify a character code of
a single glyph using the code command.

   Texturing is only supported for POV output formats.
The texture is referenced by name only, by applying the named texture to
the object.  Font3D cannot be used to generate a texture directly.

   The visibility commands only determine if a component (front
face, a bevel, etc) will be displayed in the rendered image.  If the
visibility for a component is turned off, the component is still generated
as part of the object in the output file.  This means turning the
visibility off for various components will reduce the polygon count for
your objects.  It does not turn off the actual beveling, however.
If the cut for a face or side is non-zero, then the bevel will still be
there except with the visibility turned off the object has a gap where
the bevel would have been.




                            -Top of next column-



  indent


 More Musings...

None this month!




  [INLINE]



    Bevels, sides and faces are better understood with a simple
diagram:
 [INLINE]
As you can see, it is possible to set quite a few characteristics of
the objects generated. You can't use the rounded beveling features of Font3D
to create completely rounded lettering, however.  The beveling (whether
using rounded or flat bevels) work best as subtle effects on the lettering.
This is because the rounded beveling is done using smooth triangles on
a flat bevel, which only fake the rounded appearance by altering the normals
at the points of triangles.  I covered this type of problem when discussing
BMRT's support for True Displacements in the May
1997 Graphics Muse article titled BMRT Part II:  Renderman
Shaders. Also, not all formats support the smooth triangles.
Despite this, smooth triangles are the default (POV-Ray) does support them)
and are recommended for final renderings. Previews can be run without them,
of course, to decrease rendering time.

The output from Font3D is prefixed with comments, as shown in font3d-1.txt.
This makes it easy to determine how to reproduce the objects should the
need arise.  You can view the actual object code by viewing the example
POV-Ray 3.x and RIB
files.  These are abbreviated, sample files, since the complete files
were over 700k.  Notice that the RIB file is in a format where it
can be included using the ReadArchive command.  The samples generated
produced the following images:


  [INLINE]



 POV-Ray



  [INLINE]



 RIB


As you can see the generated objects come out very similar.  The rendering
options were not optimized so the quality of the renderings shouldn't be
compared.

Font3D comes complete with very good documentation in both regular text
and a postscript version which prints out to 30 pages.  The document
includes a very thorough description of all command line options.

Although Font3D offers many wonderful features, it can be cumbersome
to remeber how to use them all.  Thankfully, Robert
S. Mallozzi has added an X-based front end to Font3D which he calls
XFont3D.  XFont3D
is an XForms based front end that includes a POV preview capability.
That means it understands how to run POV, but not any of the other supported
formats supported by Font3D.
Aimed at POV users, it (apparently, I didn't verify this) will
still run all the command line options allowed by Font3D.

                                  [INLINE]


                              XForms Interface



Using this interface is pretty straightforward as long as you understand
the Font3D command structure.  Clicking a button under the options
header on the right of the window causes the framed area to the left of
that to be populated with relevant buttons and input fields.  Many
of these options can be reset to their default values using the small,
square buttons with the black dot in them (just click on it once).
In general, you'll want to choose a font first (using the font button to
access a file selection window), specify the string to generate and an
output file name.  AFter this you can specify configuration options
and an output file format (RIB, POV, etc).  Changing the map type
(MS, which should really be PC to avoid annoying Unix traditionalists like
myself, or MAC) or the Cooordinate handedness probably won't be necessary
that often, but that depends on your own needs.





  [INLINE]






  Resources


The following links are just starting points for finding more information
about computer graphics and multimedia in general for Linux systems. If
you have some application specific information for me, I'll add them to
my other pages or you can contact the maintainer of some other web site.
I'll consider adding other general references here, but application or
site specific information needs to go into one of the following general
references and not listed here.



 Linux
Graphics mini-Howto
Unix Graphics Utilities
Linux Multimedia Page

Some of the Mailing Lists and Newsgroups I keep an eye on and where
I get much of the information in this column:

The Gimp User and Gimp Developer Mailing
Lists.
The IRTC-L discussion list
comp.graphics.rendering.raytracing
comp.graphics.rendering.renderman
comp.graphics.api.opengl
comp.os.linux.announce

  [INLINE]



Future Directions


Next month:
XeoMenu, for one.
libgr might be another, or maybe
IPAD or VRWave,
if I can get either them running in time.

Let me know what you'd like to
hear about!

_______________________________________________________________________________

                                                  1998 Michael J. Hammel




  __________________________________________________________________________


                    Copyright  1998, Michael J. Hammel
           Published in Issue 25 of Linux Gazette, February 1998
                                      




  __________________________________________________________________________


[ TABLE OF CONTENTS ]
[ FRONT PAGE ]
Back 
Next 

  __________________________________________________________________________



    "Linux Gazette...making Linux just a little more fun!"



  __________________________________________________________________________




                                  Hylafax
                                      
                               By Dani Pardo
                                      


  __________________________________________________________________________



Our company network is based on some sparcs and linux servers and windows
(3.11 and 95) clients, wich telnet to the server to use a Cobol-written
accounting program. After passing from nfs to samba (imagine the user's fun
when they first discovered winpopup), we decided to try some fax software.
We had some alternatives: comercial (and really expensive) Un*x software, the
NT alternative, and the free software solution.

NT was an unfriendly and unflexible solution, based on licenses
per user, and we didn't want to spend thousands of dollars buying an unix fax
server. Having had the good samba experience, we decided to give hylafax
a try.

HylaFax (originally flexfax) is made by Silicon Graphics, and
distributed with source code, availiable at http://www.vix.com/hylafax/.
Latest version is 4.0pl1. Get also the tiff library. If you get the source,
you must first compile and install the tiff library (in order to convert
tiff files to .g3 fax format). You must also have Ghostscript up and running
to convert from Postscript to g3. As experience: use the latest ghostscript
you can get (unless you would like to see your customer receiving ghostscript
error messages by fax).

After having the tiff library installed, hylfax compiles at first under
an stardard linux distribution, placing binaries under /usr/local, and
/var/spool/fax for the jobs.

Once installed, configure the system by running /usr/local/sbin/faxsetup.
It will add the fax user, modify /etc/services and /etc/inetd.conf (hylafax
listens to ports 4559 and 444). After some other confguration, faxsetup will
run faxaddmodem, in order to configure wich modem(s) to use. Faxaddmodem
will talk to the modems you've specified, getting its parameters, and let you
configure other stuff.

Hylafax consists in two daemons: hfaxd (the server), and hfaxq (the
priorityzed Round-Robin scheduler). You should run faxmodem to tell the schedul
er wich modem(s) it
can use. If you've also planed to receive calls, you'll have to set up
faxgetty, that will place incoming faximiles into /var/spool/fax/incoming,
respecting also data calls (pasing the control to getty/mgetty).
You should also add these daemons in /etc/rc.d. Now you can check the
server works by telneting yourself at port 4559.

Some useful programs you will use are sendfax (files), faxstat (to
check the queue), and faxrm to remove jobs. Sendfax calls faxq, sendpage, etc..
 It also
invoques ghostscript for the image format translation, so you'll normally
send postscript or ascii text. If you want to send other formats, check out
/usr/local/lib/fax/typerules. Other interesting configuration files reside
at /var/spool/fax/etc: If you run in trouble with your modem, you'll
probably want to check them.

And to finish with the server side, it's not a bad idea to modify
crontab to invoque faxqclean, in order to remove sent faxes.

    The Client Side


Once you've hylafax up and running, it's time to configure the
clients: There's MacFlex for Macintosh users, and WinFlex for Windows users.
With Winflex (and MacFlex too), you'll install a generic postscript printer (I
usually use a Apple Laserwriter Pro600 window's driver). So, when something
is sent to that printer, a window appears, asking for the phone number. You
can also check the queue, remove jobs, etc. Once the fax is sent, the user
will receive an e-mail confirming the job has been done with some other
useful information. HylaFax creators claim that "you'll never
loose a fax",
and I must say that this aspect has been taken with a great effort.

WinFlex, although a good solution, is not perfect (the interface
with the printer driver is a bit poor), and doesn't use all hylafax
features yet (any volunteer?).

Another feature yet to be perfectioned, this time a server feature,
is the automatic cover page generation: I've really had pains to create the
cover page, much postscript knowledge needed. In our company, we finally
wrote the cover page as a normal document with our word processor, and copy
it in a samba share.

    Let's Have Fun


The real party began when I was told about the accounting department
special need. They needed to send the facturation automatically by fax. That
facturation was generated by the cobol program as an ascii file, up to 20
pages. But ALL pages had to inlcude the company logo at top, and some text
at the left side. That seemed to be a harder issue than the cover page one,
but after some scripting and some C, and thanks giving to hylafax flexibility,
I could write a printer filter that:
     * gets the phone number from the ascii file.
     * divides the ascii file into pages (pages where separated by an
       EOP)
     * converts each page to pbm (portable bitmap) with pbmplus package
     * Mixes the pbm logo with each page
     * convert all mixed pages into postscript (with ghostscript)
     * Join all postscript pages into one, and finally calls sendfax.


Now, I don't even want to think how I'd solve this problem with a
Windows server.

    Conclusions


HylaFax is a versatile, powerful and flexible fax software, although
missing some features. It's highly configurable, provides a good amount of
debugging information, its secure, and it's free.

There's also a mailing list, where you can get patches and solve some
problems. Once again, free software has proven me its
strength.



  __________________________________________________________________________


                        Copyright  1998, Dani Pardo
           Published in Issue 25 of Linux Gazette, February 1998
                                      




  __________________________________________________________________________


[ TABLE OF CONTENTS ]
[ FRONT PAGE ]
Back 
Next 

  __________________________________________________________________________



    "Linux Gazette...making Linux just a little more fun!"



  __________________________________________________________________________




                 Linux Compared to Other Operating Systems
                                      
                         By Kristian Elof Soerensen
                                      


  __________________________________________________________________________


You might have the feeling that Linux is a real good OS.

In this article I will pit some of Linux' features against those of
some competing *nix's, and thus identify some of Linux's relative strengths
and weaknesses.

Linux and it's competitors

Not so long ago a frequent Linux question was "Is it really useful or
is it just another geeks only OS". Now most insightful people consider
Linux as being on par with the best, and the interesting question is "when
is it best to use Linux and when should some other *nix be preferred".

To help people identify Linux' place in the market, I've made a comparison
of ten different OS's eight of them *nix's, where each OS's capabilities
in a number of specific areas, are pitted against each other.

The comparison is available as an interactive chart at: http://www.falconweb.co
m/~linuxrx/WS_Linux/OS_comparison.html
.

It's part of a bigger Linux-page called "The Linux Resource Exchange"
that holds a lot of other Linux-info such as a searchable HOWTO-mirror,
guides to both unofficial and official patches to the 2.0.* and 2.1.* kernels,
Linux on workstation hardware pointers, and much more. Take a look at it
at http://www.falconweb.com/~linuxrx
.

It will be noted that the emphasis of the Comparison Chart as well as
this article is on usability and suitability for "real-world-usage" rather
than the more technically features of the kernels.

In this article I will present a summary of the information for Linux
2.0, Solaris 2.6, SGI Irix 6.2/6.4 and Digital Unix 4.0 and discuss it.
The web-site has more info, and holds information for BSDI 3.0, Freebsd
2.2, MacOS 8, OS/2 4, UnixWare 2.1 and OpenServer 5.0 as well. While this
article is fixed in time, I intent to keep the web-site up-to-date in a
long time from now.

A small extract of the OS Comparison Chart

         Linux 2.0 SGI Irix 6.2/6.4 SUN Solaris 2.6 DIGITAL Unix 4.0
                            OS interoperability
    Runnable foreign binaries DOS, Windows 3.1, Macintosh, some SysV Dos
                   and Windows 3.1 Macintosh, Windows 3.1
    Mountable foreign filesystems FAT, VFAT, UFS ro, SysV, HPFS ro, MAC
                                  MAC, FAT
                           Java yes yes yes  yes
                                OS-standards
       Posix.1 Designed to comply, but only a hacked version has been
                           certified. yes yes yes
                        XPG4 base 95 no yes yes yes
                           Unix 95 no no yes yes
                            Unix 98 no no no no
                               Policy-issues
    Pricing Free Pay per release Pay per release or 2 year subscriptions
                              Pay per release


              See the complete chart at http://www.falconweb.com/~linuxrx



Linux and the OS standards

The days of the great Unix wars are sort of gone. It has always been
part of the Unix-philosophy that a program written for Unix should not
need anything more than a recompile to work on any vendors *nix. In reality
there have always been many minor and major differences, making the task
of writing applications runnable on a vide selection of *nix'n a challenging
one.

During the 90' the vendors have agreed to write down and follow a set
of common standards for *nix behavior. The first one to gain big following
was the Posix.1 standard. In the last couple of years this standard have
been enchanged by standards such as Unix 95 and Unix98, the newer standards
including up-to-date versions of the older standards as well as standardizing
additional areas of Unix. It seems that after a quarter of a century Unix
can finally live up to the "Unix-box" metaphor, e.g. a generic square box
with some flavor of *nix capable of running every random Unix-program you
care to use.

It's as if OS's are becoming less important from now on. People want
a box with 100 % standard Unix behavor so they can run all ther applications,
and buy equipment and OS from whichever vendor has the best offer at the
day of purchase.

The versions of *nix made before Linux consisted of many niveaus of
revorkings of code that stemmed back from the earliest versions. This was
necessary in order for a *nix version to behave to applications like it's
counterparts so applications could run everywhere.

When Linus turned his Linux-development into a quest for a complete
OS, the Posix.1 standard was his guideline. Having the OS <-> application
interface ready, allowed him and the other developers to build all the
internal parts of the OS without using any old code. Ideas fostered and
experience gained since the original Unix could be freely used in the developme
nt
of Linux, since none of the code from older *nix's had to be used.

This is one of the main factors that allowed Linux to be so much better
than the competition. All the innards are brand new modern OS code, taking
full advantage of modern hardware.

As can be seen in the chart above, Linux haven't got the official "I
am Posix.1 compliant" stamp. A German company named Unifix
has hacked on Linux and gotten their versions of both 1.2 and 2.0 certified.
Their work have more or less been included in the main Linux-code. This
doesn't make Linux Posix.1 certified, but it ensures that it's very close,
probably as close as it's certified counterparts non-certified patchlevels
and minor releases.

It's important that work is done to keep Linux in sync with recent standards,
or it will turn into a non-standard *nix only suited for certain niche
purposes, like we are currently seing various BSD derived *nix's do.

Linux does only have a cost of zero if your time is worthless

The fact that Linux' price tag says zero is not as interesting as it
might seem.

Most of the cost of owning and using a computersystem, is the cost of
time spent on learning how to use the system, time spent on installation
and maintaining it over it's lifetime, and the initial cost of purchase
of computer, applications and OS.

If Linux is a cheap OS then it's because it can do more with less hardware
than many of it's competitors, or because it comes preinstalled with many
hundreds of apps., saving installation time, or since it gives it's users
the ability to work smarter, rather than by the OS itself being obtainable
without expense

Linux has better documentation than most OS's, and all of it is on-line,
so it keeps itself current and is search-able, unlike shelves full of expensive
vendor supplied paper manuals. The newsgroups and mailing-lists provide
a rapid help and support forum, that beats every phone-support system I
have ever used. This ensures more rapid problem fixing than most other
OS's even when the local gurus are out of luck, and can be used as a learning
tool, thus helping all Linux users work smarter than people using some
other *nix.

Linux can make a PC do most of the tricks an ordinary workstation-user
makes his workstation do. A workgroup with workstations can be renewed
to a few high-end workstations as shared CPU servers and a Linux PC on
every table. This costs less, and the really speedy CPU servers ensures
that the users gets more power than before.

What makes Linux an economically OS isn't so much it's own cost of zero,
but all the related savings and improvements it gives it's users.

Linux speaks many tongues

One of the first business support purposes Linux was widely put to was
to act as a multipurpose network device and server. It's capable of handling
most of the purposes needed to keep a modern LAN or WAN running. It can
be both router, firewall, bridge, gateway, modem and ISDN dial-up server,
nameserver and many other network task imaginable. It's also really good
at server jobs like mail, ftp and web.

Having the same OS with the same tools doing all these very different
jobs, instead of having to use a different device for every task, is saving
people a lot of time, gives more flexibility, and ties up a lot less money
in equipment purchases or leases.

Other *nix'n have somewhat similar abilities, but most require expensive
workstations and really expensive network peripherals, and those that does
run on PC's doesn't support an equally huge amount of cheap peripherals
and software as does Linux.



  __________________________________________________________________________


                 Copyright  1998, Kristian Elof Soerensen
           Published in Issue 25 of Linux Gazette, February 1998
                                      




  __________________________________________________________________________


[ TABLE OF CONTENTS ]
[ FRONT PAGE ]
Back 
Next 

  __________________________________________________________________________



    "Linux Gazette...making Linux just a little more fun!"



  __________________________________________________________________________




                                Linux Ports
                                      
                               By Ross Linder
                                      


  __________________________________________________________________________



I am writing in response to Dave Blondell's letter,
where he says "The sad truth of the matter is that Bently, and for that
matter most other software companies don't get enough requests for Linux
ports to justify the production costs."

Well perhaps it's true for ports from non-Unix environments, but it
surely is not true otherwise. A look at page 84 "Linux Makes The Big
Leagues" and "A place for Linux" is exactly the how I persuaded our
company to start using Linux. For only $250 we could have Linux with
Metrolink Motif, what's more we could use a cheap PC clone that put
our HP715 to shame in the performance stakes.

As we started to use Linux seriously, we bought more tools like
Insure++, CodeWizard, and INT Edittable Widgets. Soon the HP was
gathering dust, and only used for porting to HP-UX and testing.
Ironically the HP715 has just been paid off this year, its still a
nice machine, but its no match for a high end Linux PC.

Since we associate closely with some of our clients, they often visit
and get to see some of the new enhancements that are under development.
Often they noticed how fast Linux was compared to other platforms, so
natural evolution took place, and a lot of our clients have switched
to Linux.

And the best part of all is that I never need to change a line of code
when compiling across platforms, I use simple shell scripts that are
used as CC and LN. An example would be..

------------------------------------- mcc --------------------------------
#! /bin/sh

name=`uname -m`

if [ $name = "i386" ]
then
    cc -DSCO $*
elif [ $name = "i486" ] || [ $name = "i586" ] || [ $name = "i686" ]
then
    cc -O2 -m486 -fomit-frame-pointer -malign-loops=2 -malign-jumps=2 \
        -malign-functions=2 -DLinux $*
else
    c89 +w2 -z +FPD -DHPUX -D_HPUX_SOURCE -I/usr/include/X11R5 \
        -I/usr/include/Motif1.2 -I/mnt/INT -I/mnt/700_LIBS/xpm-3.4e $*
fi
--------------------------------------------------------------------------

The combination of Linux[Intel] with its LITTLE ENDIAN architecture and HP-PA
Risc with its nice BIG ENDIAN (Same as networking) provides a really nice
combination of test beds to ensure both byte swapping and 64/32 bit
compatibility is tested.

At the end of the day it is no extra effort to provide a Linux solution.
Probably the biggest deterrent is the _loud_ anti-commercial voices. Some
folk who don't mind paying for software should be more vocal.

Recently a really nice guy called Jay, explained to me why the GNU
philosophy was so good, he said someone pays you once to do the work
then the rest of the community should be able to get the benefit
of your work for free, as you have already been paid.

When I pointed out that most commercial applications take many man
years to write, so we have two options, to get one poor soul to pay
millions of $'s or we can try to market our product to ten thousand
people who would each only pay $100 I got no response.

And while not every one may appreciate or use any of the free software
that I have contributed to the Linux community, some of the credit must
go to my employer (Who does not provide free software as a rule) for
the skills and resources I used to create my free S/W were gained
from them, in return they use some of my free S/W.



  __________________________________________________________________________


                       Copyright  1998, Ross Linder
           Published in Issue 25 of Linux Gazette, February 1998
                                      




  __________________________________________________________________________


[ TABLE OF CONTENTS ]
[ FRONT PAGE ]
Back 
Next 

  __________________________________________________________________________



    "Linux Gazette...making Linux just a little more fun!"



  __________________________________________________________________________




                            Linux and Windows 95
                        The Best Bang for Your Buck
                                      
                             By Leonardo Lopes
                                      


  __________________________________________________________________________



Many Linux users tend to think of
Windows95 as a competitor to Linux. In
mailing lists and in Usenet it is common
to encounter comments that portray
Windows95 as the materialization of
evil and Linux as the savior of all
cybernetic souls. While it is my belief
that only a small portion of the Linux
community believes the source of all
darkness is Redmond, it is easy to get
caught by passion and forget to
analyze this situation through a more
technical light, which would definitely be
more productive in promoting the
growth of Linux, through it's own merits.

Of course Microsoft has thrown more
than it's share of low blows over the
years. But it is hard for me to believe
that any other company in the position
Microsoft was in would act much
differently. And in any case, the Linux
community has nothing to gain by
confronting the Goliaths of the software
business in any field except the
technical one. The media attention we
have received lately is totally funded on
the quality of Linux, which by the way
separates us clearly from the pack.
This attention will only grow in the
future, especially if we present
ourselves as mature albeit idealistic
developers, which most of us are.

We know all too well that Windows95
and it's applications are not as stable
as we would like, that support is very
poor and expensive, how inflexible and
insecure it is, and all the other perils
that plague it. People in charge of
supporting it are familiar with error
messages like: "Consult an Expert" and
"Reinstall Windows95".

But if you can put up with that, what
you have is an extraordinary operating
system: It is very easy to use, install
and configure; It is inexpensive; It has
impressive internationalization support;
it has excellent development tools; it is
supported by nearly every major
hardware manufacturer; not to mention
the tremendous amount of high quality
software available in almost every
category for the platform.

Linux, on the other hand, has a
different set of advantages. It is rock
solid, has excellent support, is
extremely flexible and secure, is free, is
open, and so on. From a technical point
of view, it is incomparably superior to
Windows95.

The problem is that companies have
invested billions of dollars in software
and training for the Windows platform.
And Linux does not run Powerpoint, or
MS Word, or Delphi. Also, most end
users will not take advantage of the
extra flexibility and security offered by
Linux. It is not that they have no use for
it, it is just that they are so used to
working with what they have, and so
wary of changes, that they don't really
care about the advantages they may
get. It is sad, but true: They would
rather not save sensitive information
than learn about permissions; They are
so used to rebooting their machine all
the time that it has become as frivolous
as clicking a mouse button.

Most end-users spend the whole day
performing parametric transactions on
their machines. In many cases, even
management will prefer to wait days or
weeks for their IS department to
prepare a GUI interface to a query than
to learn SQL and get the information
immediately. Of course I and many
people use Linux for most of my
personal computing needs. When I use
Windows95, I really miss the things we
take for granted in Linux, like powerful
command line tools, permissions,
stability, etc... But unfortunately most
users are not like that nor are they
likely to be.

Linux is best exactly where Windows is
lacking. It is strong in support for
different software platforms. It is
designed to be sturdy and take heavy
workloads day in day out. It has
marvelous internet tools, and picks up
the security buck where Windows
passes it. Nobody wants a web server
or for that matter any server in which
you can't have 100% confidence on.

For all these reasons, looking at Linux
as an alternative to Windows95 is in my
opinion a mistake. It's greatest potential
will be achieved as a server and
manager for Windows, complementing
Windows' weaknesses and
guaranteeing a high level of service to
the enterprises who select it. If at all
possible, it's generally a good idea that
end users don't even knowor need
to knowthat it's Linux that is offering
the advanced services they're using.

That having been said, the natural
competitors to Linux become Windows
NT and other unices. So let's see why it
is by far the natural choice for this role.

In every step of the initial cost equation
you will be saving money with Linux. To
begin with it is free, or almost free if
you want to take into account the cost
of a distribution. Then It requires far
less computer resources than it's
competitors, and you'll also save money
there. Also it will often eliminate or
reduce the need for additional
equipment, especially when compared
to NT. Then it is portable to several
platforms. So instead of supporting NT,
Solaris, Ultrix and AIX, each with it's
own expenses in training,
documentation, etc..., now you only
have to support Linux. That aspect
alone can save thousands of dollars
every month to an organization.

With regard to software, not only you
will find almost every type of software
you may need for free or very
inexpensively, but bugs are corrected
and new features are added with
incredible agility. No more of that "it will
be fixed in the next release" talk. And
since almost everything comes with
source code, if your organization needs
a feature with great urgency, it is much
easier to add it than with a closed box
OS. That is not to mention the speed
with which Linux itself is updated.
Security holes and bugs are quickly
tracked and fixed, frequently in a matter
of hours. Nobody can put a price tag on
that.

Probably the biggest difference
between Linux and it's competitors is in
support and documentation. No, it is
not commonplace yet to have your
Linux vendor put you on hold for half
an hour to charge you big bucks for
online support like the other guys. And
yes, there are situations in which online
support is indispensable. But there are
already options for online support for
Linux, a business which has everything
to grow considerably as Linux invades
the corporate market. And in an
emergency, putting a Linux server up
and running can be done much faster
than any of it's competitors. In fact, in
many cases you can have a spare hard
disk laying around for an eventuality. If
you need it, pop open just about any
PC, stick the disk in there, turn the
machine on and go. Also, if you want to
really do things right, the low setup and
maintenance cost makes redundant
solutions using Linux much more
interesting than with any other OS. And
that is not to mention that a lot of
people, including probably the people
who will be in charge of maintaining
Linux at work, use or will use Linux at
home. How many people you know use
Ultrix or even NT at home?

If your business is connected to the
internet, you will get an infinite
knowledge base, always willing to help,
generally for free. Antagonists will say:
"Other OSs have their own mailing lists
and Usenet groups too." But the fact is
that no other internet support group is
even closely as effective as Linux's.
Linux is unique in that it offers many
more tools to fix your problems. It
doesn't matter how big a guru you may
be, if the software you use is not
traceable by a debugger and doesn't
come with source, you will not be able
to get answers as fast and as easily.
And there is a "positive spiral", as Bill
Gates would like to define it, with Linux
support: A lot of people learned a lot of
what they know through the Linux
internet support channels. Now they
feel in many ways obliged to help lots
of other people. Who will learn a lot of
what they will now through these
channels. And so on.

Linux documentation is incomparable to
any other OS's. Not only in quantity,
quality and price, but also in that it is so
frequently updated. From novice users
to accomplished network
administrators, it is more than likely that
you will find most of the answers you
need from the documentation that
comes with your distribution or with the
CDs that accompany it. If you don't find
it there, it is almost always somewhere
in the internet, reachable by any search
engine. More and more books are
published every month about Linux.
There are monthly publications like
Linux Journal and Linux Gazette
available. There are tutorials, howtos,
faqs and other documents describing
every single detail of the operating
system, and most of the software that
comes with it. And that is not to
mention the inheritance of over 20
years of UNIX expertise and
information. In total, the amount saved
with support and documentation
expenses every day with Linux can add
up considerably.

Administrative costs are also much
lower in Linux, and administration is
much easier on Linux than in any other
OS. An argument many people use in
favor of NT is that it is so easy to
administrate. A lot of UNIX people were
at first fearful of losing their jobs when
NT came out. Now, how many NT sites
you know don't have a dedicated
administrator? The fallacy of Microsoft's
argumentation is that administrative
costs are not affected by creating new
users in a GUI instead of using a shell
script, or even editing a file. They are
not affected by day to day operations
when things go  right, and they are not
affected by performing ordinary
maintenance. What really skyrockets
your administrative costs is when things
go wrong. And anyone supporting
networks knows that they do. With any
system. And when that happens, you
need clear error messages. You need
trace and debug capabilities. And you
need documentation. And Linux offers
all these items in great generosity,
much more than NT and more than
most other unices.

Another factor that increases your
administration costs is when you have
to do anything that is out of the
ordinary. When that happens, you want
flexibility. And while NT may be
acceptable for cooking pasta, finer
dishes will require tools and flexibility
you can only get from UNIX. Because
Linux is so flexible, you can frequently
eliminate routers, bridges, and other
equipment which not only add to
additional hardware cost, but also
contribute to make your network more
complex, introduce new environments
to be learned, and become yet another
failure point. With Linux, cost involved
in the maintenance of these
equipments can often be eliminated,
and other times, greatly reduced.

@subhd:Getting To the PointIntegrating Linux and Windows95

Using Linux with Windows95 is not a
very complicated task. Most of the work
is handled by the Samba suite, a host
of programs designed to work with the
SMB protocol, capable of most services
you expect from a network server:
Handling logins, sharing hard drives,
printers, etc... Samba is especially
useful when you have a mixed
UNIX/Windows95 environment, like we
did at the Mathematics Department at
UFC. When people logged on any
Windows machine, they would have
access to their home directories at the
H: drive. This brought up an
administrative problem, as people
quickly took up all the hard drive space
available installing Windows programs
in their H: drives. Nothing that a quota
system won't fix.

Samba fools your Windows95 machine
into thinking that it is talking to a NT
server. You can have network profiles,
unified registries for all your machines,
run login scripts, and generally have
most of the bells and whistles available
with NT. [See earlier issue of Linux
Journal]. It is one of the best supported
and documented programs available.
The only problem I had is that logins
take a little longer to complete, when
compared to NT. It is generally a little
slower than NT, but perfectly usable.
The configuration files have a format
similar to the Windows .ini files. You
can use it to share printers, hard disks,
cdroms, etc... According to the
documentation, there is no real reason
why other mass storage peripherals
shouldn't work, although I haven't tried
any.

At PCC Inform=E1tica, a computer retailer
at which I installed an intranet based on
a sole Linux server, I also installed
HylaFax, an excellent fax server. It was
not as simple to install, mainly because
it asks so many questions that it can
scare you. If you take your time to
answer them, especially with the aid of
your Modem's manual, it should be no
big deal. Also it searches for some
programs which you will not find in
most distributions. For instance, it
asked me for mawk, which I
symbolically linked to gawk, and never
had any problems. The Windows95
Hylafax client, whfc, works reasonably
well, although it is not quite stable
enough for everyday use, and lacks
important features, like job scheduling. I
contacted the author, but he was busy
with other projects, and told me that he
could not release the source code
because of limitations by his employer.
HylaFax is so richly documented I
decided to implement my own client,
with the specific needs of my
organization. As soon as I get a couple
of machines, I will start doing that. Any
volunteers?

Mail came mostly configured. Not only
sendmail was configured correctly
almost right out of the box, but a pop
server also already came installed. All I
had to do in Windows95 was install a
major browser.

Information about products is created
on regular Windows95 programs, then
converted to HTML and made available
for the intranet at the Linux server.
Tutorials and documentation for
installed programs available in HTML
are also available from the server.

The Linux machine at PCC Inform=E1tica
also has the responsibility of doing IP
Masquerading for the whole network of
22 machines and counting. I had to get
the newest stable kernel at the time
(2.0.29), and a patch for it to work with
ftp.. Even in this kernel, the help
message on the configure script will say
that masquerading is experimental
code. I never had any problems,
running the machine under the
conditions above. Once the kernel was
recompiled, all I had to do was add two
calls to ipfwadm and I was all set. I had
invaluable help from the people in the
internet for this task. The Brazilian linux
mailing list linux-br, an Issue of Linux
Journal, the kernel documentation, web
documentation, were all useful tools for
me to get this job done.

Telecommunications in Brazil is very
expensive. At the time we were
planning this network, our first thought
was on getting a 64k leased line from
the company to our service provider.
That would cost us around US$1050 a
month, only on telephone company
charges. So we decided to build a new
machine, install it at our service
provider and put in it our web content,
ftp server and mail server. The
company would then access the
internet via a dial-up account, which
would cost us only US$210 a month.
Since dial-up calls tend to fail a lot, I
made a simple script which would
check if the line was ok, calling the
service provider again in case the line
had dropped. Also this script mailed my
outside account the current IP number
for the machine, in case I needed to
access it from somewhere else in the
internet. Then I put the script to run
every 5 minutes with crontab. Simple
and agile. In other words, low
administration costs. If the bandwidth
required increased sufficiently, it would
be easy to add a second modem and
use equal line balancing to get a higher
throughput.

Another use for crontab is making
automatic backups of the companies
database, which runs on Access.
Everyday at noon and at 6PM a copy of
the whole database is made to the
server using a script based on smbtar,
part of the Samba suite, and at 8PM a
copy of the database is made to tape.
The home directories, which users use
at their Windows95 clients mainly to
store business proposals, are also
saved to tape every week. Most users
don't even know there is a Linux
machine in the network.

@subhd:Bottom LineSavings

Savings with Linux start with the O.S.
itself, grow through setup with lower
power equipment (All the above work
smoothly on a Pentium 133), and by
making networking hardware
dispensable (router), goes through easy
software setup, flexible settings and
easy administration and training, and
adds up every month, with low
equipment maintenance costs, agile
software updates, and inexpensive
support. It also protects your
investment by allowing you to easily
upgrade to other platforms. Or even
other OSs, if you for some strange
reason would ever want to do that.

How much you will actually save
depends on many factors, but there are
just so many ways to save with Linux,
from support fees to documentation to
feasible redundancy which means less
down time to flexibility that one thing is
for certain: It will be a bundle. At PCC,
Linux saved more than US$3000 in
initial setup costs and another US$1000
every month, out of software,
communications and maintenance
costs. It also has increased the safety
of the data on the network, provided
the employees with the convenience of
private disk space and access to the
wealth of information offered by the
internet and made internal
communications more agile and
inexpensive. If you though your
company or office was too small to
afford a high quality intranet or a
company-wide internet connection, think
again. With Linux, Now You Can!!!



  __________________________________________________________________________


                      Copyright  1998, Leonardo Lopes
           Published in Issue 25 of Linux Gazette, February 1998
                                      




  __________________________________________________________________________


[ TABLE OF CONTENTS ]
[ FRONT PAGE ]
Back 
Next 

  __________________________________________________________________________



    "Linux Gazette...making Linux just a little more fun!"



  __________________________________________________________________________




                               Compiler News
                                      
                               By Larry Ayers
                                      


  __________________________________________________________________________



                                Introduction
                                      


The GNU gcc compiler is one of the most highly-regarded applications made
available by the Free Software Foundation; it has become an integral part of
Linux distributions.  The existence of gcc and its corollary utilities (make,
autoconf, etc.) makes it possible to distribute source code for everything
from the Linux kernel itself to a wide variety of free software applications
and utilities.  This fact is crucial to the survival and health of Linux;
different people run different kernels and distributions, and it would be
expecting too much to ask volunteer developers to create binary distributions
for all of the different flavors and variations of Linux and other
Unix-derived operating systems.  Richard Stallman does have a valid point when
he emphasizes Linux's dependence upon the many GNU utilities.

Lately there has been a flurry of activity in the GNU gcc compiler world,
resulting in new releases and giving Linux users expanded choices in their
development environments.

The GNU people operate in a relatively closed environment; the average user
doesn't have access to news or progress reports; a new release is usually the
first indication that development is actually progressing.  Since GNU software
is released under the GNU licence, there is nothing to stop other developers
from modifying the code and making available variant releases.  There exists
another approach to free software development, in which patches and
"snapshot" releases are freely available for interested developers and users.
The Linux kernel (with both stable and unstable development releases
available) is an obvious and influential example.  XEmacs, KDE, and GNOME are
others.  Since the advent of egcs it seems the GNU developers might be moving
toward this development model, judging by some new material at the
GNU web-site.

Eric Raymonds' online
 article,
The Cathedral and the Bazaar is an insightful and interesting
interpretation of these two different models of free software development.
This piece was one of the inspirations for the first gcc variant (that I know
of) to become available: egcs.

                                    egcs
                                      


Gcc 2.7.2 has been the standard GNU compiler for some time now.  The Cygnus Cor
poration is a company which offers
commercial support for the GNU utilities and has ported many of them to the
Windows environment. A group of programmers there decided to try an
experiment.  Beginning with the stock GNU sources, they adapted the patches
which would eventually become gcc-2.8.0 (I assume from the GNU gcc development
source tree) and added experimental features which the GNU developers either
weren't interested in or were delaying for a future release.  The idea was to
make periodic snapshot releases freely available with the hope of attracting
more developers.  This approach seems to be working; I don't know how many new
programmers are contributing to the project, but the two releases they have
made to date (1.00 and 1.01) are being used by quite a few people without
many problems.  Any fruitful changes in gcc/egcs will be available to the GNU
gcc developers for possible inclusion in future releases.  This benefits
end-users as well as the GNU programmers, as users get to try these new
features and functions (and hopefully bugs will be reported and dealt with),
while the sources may be of use to the GNU gcc people in their efforts.

                                    pgcc
                                      


Both the gcc and egcs compilers are intended to be built and used on
systems based on a variety of processors.  Yet another group of developers has
hacked the egcs code to support operations peculiar to the Intel Pentium
processors. Pgcc consists of a set of patches which can be applied to the egcs
source, which will allow code to be compiled with various pentium
optimizations.  These developers claim execution speed (of binaries
compiled with pgcc) can be five to thirty percent faster than stock gcc.  A
new Linux distribution called Stampede
is using pgcs to compile the binaries of the kernel and
applications which they plan to distribute.  Interestingly enough, the
original patches which the pgcc team used as a starting point came from a
programming team at Intel.

                               My Experiences
                                      


Though the GNU gcc compiler has always worked well for me, the appeal of
novelty led me to tentatively experiment with egcs when the first real release
appeared on the egcs web-site late
last year.  The first thing I noticed was that the compiler tends to generate
more warnings than the -Wall switch did with gcc 2.7.2.  These
don't seem to have deleterious effects, and I've heard gcc 2.8.0 exhibits the
same tendency.  Everything I tried seemed to compile successfully except for
the KDE source; I've been told that this will be fixed for KDE beta 3.  If
you've never built a version of gcc from source be prepared for a long,
disk-space-intensive compilation.  It happens in several stages; during the
last of these the compiler actually compiles itself, a process known as
boot-strapping.

Some time after installing egcs I happened upon the
pgcc web-site.  I downloaded
a large set of patches and patched the egcs source, ending up with another
compiler.  Along with the claimed execution speed increase (which in most
cases probably isn't large enough to be noticeable) optimization can be
increased to -O6, and a pentium-specific flag
(-mpentium) can be used.  The binaries generated tend to be
substantially larger than gcc's due to the default inclusion of
exception-handling.  This can be disabled with the switch
-fno-exceptions.

So far I've compiled several Linux kernels, XEmacs, mutt, slrn, the Gimp,
gzip, bzip2, and others without any problems.  I wish I was a systematic type
of person and had timed the execution of these programs before and after using
egcs/pgcc, but I'm not.  As an example, I'm running XEmacs 20.5 beta-22 using
the Linux kernel 2.1.84, and the editor seems snappier and more responsive
than before.  But is this due to the compiler, the kernel, the XEmacs version,
or (most probably) all three?  Too many variables and not enough time!

I wouldn't recommend installing any of these gcc variants unless you are
willing to monitor newsgroups, web-sites, and possibly the mailing-lists.
Luckily problems and work-arounds are reported quickly, and of course the
invaluable safety-net of gcc distribution packages is always there if your
set-up gets badly hosed.   It will be interesting to see what comes of this
non-adversarial fork in the evolution of gcc.


Last modified: Sat 31 Jan 1998




  __________________________________________________________________________


                       Copyright  1998, Larry Ayers
           Published in Issue 25 of Linux Gazette, February 1998
                                      




  __________________________________________________________________________


[ TABLE OF CONTENTS ]
[ FRONT PAGE ]
Back 
Next 

  __________________________________________________________________________



    "Linux Gazette...making Linux just a little more fun!"



  __________________________________________________________________________




                  Gmemusage: A Distinctive Memory Monitor
                                      
                               By Larry Ayers
                                      


  __________________________________________________________________________



                                Introduction
                                      


Linux may not have many office-suites available, but it sure does have a
wide variety of system, process, and memory monitors!  I use ProcMeter quite a
bit, mainly for the incoming and outgoing TCPIP packet display, but recently I
happened upon an unusual memory monitor which displays the relative
proportions of memory in use by running processes.  Gmemusage is a small X
application written by Raju Mathur.  He has been attempting to emulate a
monitor (also called gmemusage) which is used on Silicon Graphics
workstations.

                                  Features
                                      


Here is a screenshot, which will save me several paragraphs of description:


                              Gmemusage window


As with many other such monitors, the information shown is essentially the
same as what is shown in the memory fields produced by  ps
-aux, which derives its information from pseudo-files in the /proc
directory.  These files, such as meminfo and loadavg, are
generated dynamically by the kernel.  You can read them directly, by running a
command such as  cat /proc/meminfo.

Although a plethora of information is presented by the output of
 ps -aux or  top, more detail is shown than is
needed for a quick overview and comparison, and tabular data doesn't easily
lend itself to comparative analysis.  You won't see precise differences
between memory usage while contemplating a gmemusage display, but the
proportions are shown in a graphical and easily interpreted format.  In most
cases the relative proportions are more useful than the decimally exact detail
shown by  ps or  top.

Raju Mathur has plans to enhance gmemusage.  One possibility (mentioned in
his TODO file) is to add a pop-up window which would give
additional information about a process when its name in the main display is
selected with the mouse.

I like this small utility, partly because it diverges from the usual
dynamic bar-chart display found in many memory monitors, and also because it
is small and specialized.  You don't have to spend time configuring it either;
it works well "out of the box".  If you would like to try it, the source
archive is available at the gmemusage home WWW
site.


Last modified: Sat 31 Jan 1998




  __________________________________________________________________________


                       Copyright  1998, Larry Ayers
           Published in Issue 25 of Linux Gazette, February 1998
                                      




  __________________________________________________________________________


[ TABLE OF CONTENTS ]
[ FRONT PAGE ]
Back 
Next 

  __________________________________________________________________________



    "Linux Gazette...making Linux just a little more fun!"



  __________________________________________________________________________




                                   Xephem
                                      
                               By Larry Ayers
                                      


  __________________________________________________________________________



                                Introduction
                                      


     ephemeris n., pl. ephemerides 1. A table giving the coordinates of
     one or a number of celestial bodies at a number of specific times
     during a given period. 2. A publication that presents a collection
     of such tables; an astronomical almanac.


The above definition came to mind when, some time ago, I happened upon a
Debian package called xephem while browsing the contents of a
distribution CD.  At the time I dismissed any thought of installing it; I
could visualize (falsely, as I later learned) a simple X application
displaying scrollable lists of sun, moon, and planet rising and setting times
for various latitudes.  This sort of information is easily available from
printed ephemerides and hardly justified installing a probably old package.

A salient aspect of free software is that it's not advertised, and
word-of-mouth has its limitations.  News of an application with wide appeal,
such as an editor or file-manager, will eventually be spread via the internet,
but a program which occupies a specialized niche might not receive the
attention it deserves.

Some time later I saw a brief description of xephem in a usenet posting
which was enough to spark my curiosity.  After trying it out, I was impressed,
and thought the word should be spread.

                          Description and Features
                                      


Xephem is a Motif-based X application which goes far beyond the name's
implication.  It's a multi-purpose astronomical program which can present
detailed, zoom-able star-charts as well as views of the earth, moon, planets
and the entire solar-system.  These views can be from any location on Earth,
at any time in the past or future.

This application can be effective on several levels.  The casual star-gazer
can consult xephem just to see what planets and constellations are visible on
a certain night, and perhaps print out a star-chart.  As a teaching aid
xephem's graphical and animated displays could spark a student's interest.
The serious amateur astronomer can set up a link between a telescope and the
program, so that the sky-view displays whichever spot the telescope is also
seeing.

This review will be more comprehensible if a screenshot is presented first.
The first window which appears when xephem is started is the control
window:


 xephem controls

In this window various parameters, such as location, date, and time, can be
set.  From the menubar the view windows can be summoned, as well as which of
the various astronomical databases (included in the distribution) should be
loaded into memory.  These databases are quite a useful resource to have
available.  They include the Messier and NGC databases of deep-sky objects,
along with databases of asteroids, comets, and satellites.  Updated versions of
the latter two are available on the xephem web-pages.

Here is a screenshot of a skyview window:


 Skyview window

This window is much more than a simple star-chart of a certain date, time,
and location.  Right-mouse-button clicking on a star or other astronomical
object summons a small window showing various facts about the object.  Zooming
in can also be done with the mouse, and a zoomed view can be panned using the
scroll-bars.  A variety of viewing options can be set from the menubar.  The
constellation names and outlines can be shown, and if any of the xephem
databases are loaded the objects in them will be visible, if desired.

One view window which I find particulary interesting is the earth view.  A
representation of the earth from an orbital viewpoint is shown, with the sun's
illumination and current zenith-point highlighted.  This is updated in
real-time, and equivalent views displaying the zenith location and area
illumination of either the moon or the other planets are menu options.


 Earth View

Another view-window displays the solar-system in schematic form.  This and
the earth-view windows can be animated, a sort of cartoon-movie which shows
the relative movements of the various celestial objects.

                                Availability
                                      


The xephem web-site
is the place to visit if you'd like to investigate this application.  Source
for current development versions is available there; I've had good luck
compiling and running these.  Users lacking the Motif libraries can obtain
statically-linked binary releases from this site, and updated databases are
available as well.  Elwood Downey is the author of xephem.  If you install
it, I'm sure he would be glad to hear any comments you might have.


Last modified: Sat 31 Jan 1998
< !-- hhmts end -->



  __________________________________________________________________________


                       Copyright  1998, Larry Ayers
           Published in Issue 25 of Linux Gazette, February 1998
                                      




  __________________________________________________________________________


[ TABLE OF CONTENTS ]
[ FRONT PAGE ]
Back 
Next 

  __________________________________________________________________________



    "Linux Gazette...making Linux just a little more fun!"



  __________________________________________________________________________




                     A Simple Internet Dialer for Linux
                                      
                             By Martin Vermeer
                                      


  __________________________________________________________________________



Those of us that have used Netscape (or other Web browsers) under Windows,
may have felt some envy at the sight of the Dialer, a little box in one
corner of the screen showing that you are on-line and how much time you
have already spent on-line, so your phone bill doesn't go overboard.

In Linux, on the other hand, setting up a dial-up connection and making
it work is often a rather painful process, a "challenge", if you like:
Not only no handy auto-install packages available from your internet service
provider -- you have to figure out everything for yourself, and know what
questions to ask -- but also establishing the connection every time requires
you to go through a sequence of operations.

Open an xterm or a virtual console, log in as root, and run the ppp
startup script (unless of course you use the  diald
package for dial-on-demand, an alterative also. I personally found that
it had too much a mind of its own :-).

Closing the connection similarly requires you to do the same to run
a disconnect script.

One of the first things I did therefore when I decided to learn tcl/tk
was to write a Dialer look-alike. It (tkdial)
is attached to this text; it is the first tcl/tk program I ever
wrote -- just under 150 lines -- and that may show.  But tcl/tk
is ideal for this kind of job, "glueing" existing command line facilities
together into a beautiful motif-look, mouseable package. Just have a look
at the pictures!
_______________________________________________________________________________

                          [link down]   [link up]

   ______________________________________________________________________
                                      

You can put a call to this script somewhere in your X startup, in the case
of Red Hat 5.0, in the file /etc/X11/Anotherlevel/fvwf2rc.init.
Then you will always have it on your desktop (Linux lives on connectivity!).
It gives precise, interactive, manual control of your ppp link.

There are some things with a dial-up connection which appear not generally
known (I'm  not talking to you, geeks and gurus :-).
I'll give a quick run-down of my experiences as I understood them (but
note that I am no professional):
     * In order to be able to run tkdial (which calls pppd) as an
       ordinary user, you should have pppd set suid root. Additionally,
       you should be able to read the scripts in the /etc/ppp directory,
       so they should either be world readable or readable by a group to
       which you belong. (A nice exercise in basic system administration.
       But if you give world reading rights to your pap-secrets file, you
       will deservedly fail your exam!)
     * The standard Red Hat sendmail setup uses sendmail -bd -q1h, in
       other words, activate the sendmail daemon once an hour. That's not
       much. In a dial-up environment you want to send out mail while the
       line is up, so change the -q1h to -q2m, for example, for every two
       minutes. And follow with the mailq command if your mail really has
       left your machine, before closing down the ppp link. (If you
       forget, not to worry: The queue will continue to try for five
       days, every time ppp comes up.)
     * There is an option to pppd called lcp-echo-interval, which can be
       used to keep the line alive. LCP means Link Control Protocol, and
       by putting an option lcp-echo-interval 60 into either your
       /etc/ppp/options file or on the pppd command line when starting it
       up (i.e. inside the tkdial script file), you can keep your line
       alive even when not actively browsing.
       This is important because, with the ubiquity of crashy operating
       systems, internet service providers have taken to the habit to cut
       the line when nothing has arrived over it for a couple minutes.
       Imagine starting a five hour download, going shopping, and
       returning only to find that three minutes after you closed the
       door, the machine crashed and the phone line is still open,
       burning up your money for nothing! (This could even happen in
       principle with Linux, if the power goes down and you don't have an
       UPS, or your dog gnaws off the phone wire. Well, the modem has a
       time-out also). So Windows dialers send an empty package once
       every minute or so to the ISP, telling "don't worry, I'm still
       alive!" And when the system crashes, the line cuts promptly.
       With the option given above, also Linux will send an empty package
       every 60 seconds.
     * If you have a POP3 mail service, the best program (transport
       agent) undoubtedly is fetchmail, which transports the mail to your
       "system maildrop", typically /var/spool/mail/<userid>. Also
       fetchmail can be run as a daemon. You can use xbiff or xmailbox to
       inform you of arrived mail, and read it with pine, exmh
       (recommended, another one of those tcl/tk miracle programs!) or
       whatever. If you use Netscape mail, forget about all this, you
       just have to configure it on its own terms, which involves
       learning pretty much the same concepts anyway.
     * A trick (I don't really know if this is wise or intended, but it
       sure is effective!):
       If you use very much the same search agent all the time, e.g. Alta
       Vista, put it in the file /etc/hosts. Find out Alta Vista's IP
       address with ping. The details are left as an exercise for the
       reader, as well as the explanation for the speedup achieved (hint:
       DNS...)
     * Make sure that your machine name (as given in the network setup
       procedure) is the same as that which your ISP gave to your
       mailbox. So, if you are john.smith@isp-international.com, call
       your machine isp-international.com. Not very romantic, but you
       avoid problems with an anti-spam feature in some sendmail
       installations, which bounces mail coming from a "sender" not
       existing (i.e. not found by the domain name service) on the
       internet. (I expect that this feature can be circumvented by
       reconfiguring and recompiling sendmail.cf. I guess the sendmail
       folks just bet that such a feat is way beyond your average
       spammer, and I bet they're right...)
       Alternatively, make yourself exist; but that requires the
       co-operation of your ISP. E.g. EUnet would give you a mailbox name
       of donald.duck@john-smith.pp.fi, which provides you with a
       slightly more personalized name for your own machine...
       And make sure to keep the localhost  name also valid. Some
       programs depend on it.

_______________________________________________________________________________


Acknowledgement: I am indebted to Jaakko Hyvtti
of EUnet Finland, who provided me with working ppp scripts and plenty good
advice.
_______________________________________________________________________________

                                   Enjoy!
                                      

   ______________________________________________________________________
                                      


                          (a piece of my desktop:)
                                      


                                     -
                                      


                                [my desktop]




  __________________________________________________________________________


                      Copyright  1998, Martin Vermeer
           Published in Issue 25 of Linux Gazette, February 1998
                                      




  __________________________________________________________________________


[ TABLE OF CONTENTS ]
[ FRONT PAGE ]
Back 
Next 

  __________________________________________________________________________



    "Linux Gazette...making Linux just a little more fun!"



  __________________________________________________________________________




                 Secure Public Access Internet Workstations
                                      
                             By Steven Singer 
                                      


  __________________________________________________________________________



Introduction.




Linux is the perfect operating system to deploy in a hostile environment, the b
uilt in security
features combined with the customization most window managers allow make Linux
ideally
suited to this task. Recently a local career planning agency wanted to deploy a
 dozen public
access Internet workstations at various locations in the community including li
braries and
hospitals. Linux was chosen as the operating system for the task. This article
provides details
about how to setup  Linux so that it can safely be deployed as a public access
workstation.





  Why Linux



When it came time to decide on how to setup the workstations various solutions
were
considered.  It was decided before hand that the hardware would be Intel-based
PC's. That
essentially left us to consider the various Microsoft offerings or Unix.  The l
icensing costs for
NT would have added significantly to the projects budget. Even after buying NT
licenses for
each workstation, an experienced administrator would have had to spend time con
figuring and
securing each NT machine.  It was determined that NT was an option, but an expe
nsive one.
Win95 is significantly cheaper than NT, but lacks the built in security feature
s of a more
advanced operating system.  Our biggest fear with Win95, was that we would freq
uently have
people  walking in and messing up the systems setup.  Linux offered us a soluti
on to all of
these problems.  The flexibility of X-Windows, combined with Linux's basic secu
rity features
allowed us to setup the workstations such that we did not have to fear hostile
users.  The
licensing costs were essentially non-existent, and setting up each workstation
became a
manner of following a simple routine.




The Installation Procedure.




When you have to setup a bunch of Linux workstations with essentially the same
configuration, there are two approaches you can take. The first one consists of
 setting up and
testing the first machine, then dupilicate the entire hard disk onto each works
tation. (If you
are doing this remember that you will most likely have to re-run Lilo on each w
orkstation).
The second method is to manually set-up each workstation by following a standar
d check-list.
We opted for the second method due to logistical reasons.  However, the install
ation
procedure was automated by re-using config files, and running scripts where pos
sible.


        We used RedHat 4.3 as our distribution, installing from the RedHat Powe
rCD set.  I
suspect any decent Linux distribution would have worked equally as well.   By t
he time we
had finished the installation of the first machine, I had established a step by
 step checklist of
things to do during the install. As we went along, we occasionally revised the
check-lists
which required us to go back to the original few machines and make some changes
 after the
fact.






  OS Installation & Networking.



The installation started out as a standard Red-Hat install, the machines had pl
enty of hard
disk space so we were quite liberal in what packages we installed. This include
d any
networking stuff we felt was relevant, and X-windows.  We had to manually insta
ll


ipfwadm since there wasn't an explicit option for it.




    Dial-out-on demand.

The machines were to be connected to the Internet via a modem, we used the dial
-out-on
demand PPP support that is built into the 2.x series of kernels. We placed a ch
at script
containing the pertinent information in /etc/ppp and insured that only root had
 any sort of
access to it.(mode 700) For more details on setting up dial-out on demand netwo
rking see the
kernel 2.0 documentation and the PPP FAQ. The Networking HOWTO should also cont
ain
some useful information.   We then tested the network connection to insure it w
orked.






X-Windows.




  XF86Config



The XF86Config file is the configuration file for the XFree86 X server.  We cre
ated this file
as we would have for a normal Linux workstation running X except added  the lin
es
"DontZap" and "DontZoom". DontZap prevents a user from killing the X-server wit
h a break
key sequence. DontZoom prevents dynamic changing of resolutions. Both of these
options
prevent a hostile user from making the machine look somehow different for the n
ext person
that comes along.  Further details about this file can be found in the XF86Conf
ig man page.




  Xdm.

Xdm is a log in manager for X-windows.  Instead of the standard text-based logi
n prompt you
normally get at the Linux console, Xdm is a X based program that asks the user
for a user-name  and password. The user is then logged in with X-windows runnin
g.




The following files are located in xdm go in /usr/X11R6/lib/X11/xdm.




    Xsession

We used a standard Xsession file, however we made sure that it loaded fvwm as o
ur window
manager(Other window managers will also work, however we decided to use fvwm)




    XResources



The XResources file controls settings for xdm's log in process. We used the sta
ndard
XResource file but added/changed the following lines.  They all effect the appe
rence of the
login window, with the exception of the last line which allows our guest accoun
t to work
without a password.




     xlogin*greeting: Welcome, please log in as 'guest', with no
     password.
     xlogin*namePrompt: login:\xlogin*fail: Login incorrect, please use
     the username 'guest' with no password
     xlogin*allowNullPasswd: true
     


and removed the following from the translations section to a user from getting
around XDM.




     Ctrl<Key>R: abort-display()\n\
     




    XSetup

The XSetup file is called once the user logs in, any programs you want to run u
pon login can
be started from this file. this is where we would place an xsetroot command or
something
similar.  The default version of XSetup might start Xconsole(a program that dis
plays the text-output of the Xserver in a small window) we did not want this in
formation to be visible so
we commented that line out.




  FVWM setup.



We choose fvwm as our window manger as a matter of personnel preference and fam
iliarity,
most other window managers will require similar changes.  All configuration inf
ormation for
a users fvwm setup is stored in a file named .fvwmrc located in their home dire
ctory.  A
system-default version of the config file is often located in
/usr/X11R6/lib/X11/fvwm/system.fvwmrc. We will use this file as our base, and o
utline the
important things you will have to check for.  Since there is no "standard" base
 fvwm
configuration, I will only outline the changes to make, and will assume familia
rity with the
format of an fvwmrc file.




    The Popup Menu's.



The config file you use as your base will most likely start off with some pop-u
p menu's
predefined. You will want to remove many of the  predefined menu items.. I woul
d
recommend only leaving two items, "netscape" and "exit".




    Paging.



It is a good idea to disable paging, this will avoid some unnecessary user conf
usion.


This can be done with a  line saying.

     PagingDefault 0
     


It is also a good idea to remove the "Pager" line if one exists.






    GoodStuff



The GoodStuff program that comes with Fvwm places a "Button-bar" at a predeterm
ined
location on the screen. This button bar allows for easy launching of applicatio
ns.  GoodStuff
is a flexible program that can be tailored to your taste. I chose a button bar
consisting of a
single row located at the top-left of the desktop. The following are the releva
nt lines.



     *GoodStuffRows 1*GoodStuff Netscape netscape.xpm Exec "Netscape"
     /usr/local/netscape/netscape*GoodStuff Logout mini.exit.xpm
     Quit-Verify 


     I created a pixmap file named netscape.xpm containing the netscape logo to
 be used as my
icon.  Pixmaps are usually stored in /usr/X11R6/include/pixmaps.




    Startup commands.



Fvwm allows you to execute certain programs upon start-up.  Since any guest use
rs logging
onto the machine would be using the Internet, we decided ensure that the modem
starts to
dial as soon as possible. We added an Initfunction section to the end of the fv
wmrc file. If
the PPP link already happens to be up, the ping will be successful, otherwise t
he kernel
should start the connection process. Replace router.myisp.ca with the hostname
of a machine
located at your ISP.




     Function "InitFunction" Exec "I" /bin/ping -c 1 router.myisp.ca &
     EndFunction
     



Security Considerations.




  BIOS Setup.



In a situation where the console is publicly accessible the BIOS is your first
line of defense
against hostile intent.  Most modern BIOS's support password protection of some
 sort.  It is
recommended that a boot-up password be set. In our setup, we decided that we on
ly wanted
to allow "trusted" people to be able to boot the machine. Otherwise someone cou
ld boot the
machine using a floppy disk as the root file system,(thus they will be able to
gain root
privledges), or alternatively boot into DOS and format the hard-disk.  In addit
ion to the boot-up password we also installed a password to protect the BIOS se
tup, and disabled booting
from the floppy drive.




  Inittab



 /etc/inittab is the configuration file for the "init" process.  Since we wante
d our workstations
to work only in X-Windows, we changed the initial runlevel to 5. It is done wit
h the
following line.  This means that when the machine boots, The X-server and Xdm a
re started
automatically.


     id:5:initdefault: 
     



"Init" is also responsible for handling the "getty"'s or terminal monitors whic
h handle text-based logins from the console or other terminals physically conne
cted to the machine. The
default inittab file should have a section that looks similar to this.




     1:12345:respawn:/sbin/mingetty tty1
     2:2345:respawn:/sbin/mingetty tty2
     3:2345:respawn:/sbin/mingetty tty3
     4:2345:respawn:/sbin/mingetty tty4
     5:2345:respawn:/sbin/mingetty tty5
     6:2345:respawn:/sbin/mingetty tty6
     


You should remove the "5" from the second section of each line. The result shou
ld look
something like this.




     1:1234:respawn:/sbin/mingetty tty1
     2:234:respawn:/sbin/mingetty tty2
     3:234:respawn:/sbin/mingetty tty3
     

This means that when the system is in runlevel 5(The runlevel where X-windows s
tarts up to
handle log-ins.) A user is unable to login from the text-based console. Before
making this
change it is a good idea to insure that X-windows and XDM are working properly.
  Disabling
text-based logins is not essential to security, but we felt that it would confu
se users who
would walk up to a machine that was left logged in text mode. If for some reaso
n X-windows
stops working after you disable text-based logins, you will have to boot the ma
chine into
single user mode in order to login. This can be done by passing an option to th
e kernel from
the lilo command prompt.




  S90Console.



RedHat uses the SVR4 style init-scripts to manage the boot-up process. The basi
c idea is that
there is a directory for each runlevel under  /etc/rc.d.  When init switches ru
nlevels it goes
into the appropriate directory and executes each file that starts with a 'S' in
 ascending order.
Eg on my RedHat system, when my system enters runlevel 3(multi-user) first
/etc/rc.d/rc3.d/S10network is executed, and lastly /etc/rc.d/rc3.d/S99local is
executed.


Even though we disabled the getty's for the console, a user could still press C
TRL-ALT-F1
(or another function key) to switch to another virtual console from X-windows.
I am unaware
of a way of preventing this (short of kernel modifications). So in the event th
at a user
accidently ended up switching virtual consoles we decided to leave the user ins
tructions on
how to get back into X-windows.  We created the file S90Console and placed it i
n
/etc/rc.d/rc5.d and gave root execute permissions to it. The file looks as foll
ows.


     #!/bin/shD="Press Ctrl+Alt+F2 to use this computer"
     echo $D>/dev/tty1
     echo $D>/dev/tty3
     echo $D>/dev/tty4
     echo $D>/dev/tty5
     echo $D>/dev/tty6
     echo $D>/dev/tty7
     

Since getty does not run on any virtual-consoles, the X-server uses the second
virtual console
by default.






  inetd.conf



The file /etc/inetd.conf is the configuration file for the inetd daemon. This d
aemon is
responsible for starting daemons that provide network services when needed. Not
 all daemons
are started by inetd.  Many, such as sendmail and httpd can either run in stand
alone mode, or
under inetd.  If your machine is only being used as a workstation, and is not p
roviding
network services to anyone then you should disable all unnecessary daemons.  To
 disable a
daemon that is currently being started by inetd, just added a '#' sign at the b
eginning of the
relevant line to comment it out.  I would recommend disabling finger, pop, ntal
k, talk, and
any other daemons that are not being used. We decided to leave telnet and ftp e
nabled to
allow for remote administration. However if you are doing this remember to keep
 an eye out
for security advisories that deal with problems associated with these packages(
and any other
program that is running on your system.) Usually fixing a bug is just a questio
n of upgrading
to the newest version of the program in question.




  Firewalling Issues.



The Linux kernel can be configured to support IP Firewalling.  This allows you
to specify
what packets the kernel should ignore, for example you can instruct the kernel
to refuse to
route any packets from the local machine destined to TCP port 25(of any machine
). You must
enable IP Firewalling, when compiling your kernel if you want to use this featu
re.  You
control the firewall parameters with the "ipfwadm" command, usually located in 
/sbin.  We
added the following lines to /etc/rc.d/rc5.d/S99local.



     /sbin/ipfwadm -I -f
     
     /sbin/ipfwadm -O -f
     
     /sbin/ipfwadm -O -a deny -P tcp -D 0.0.0.0/0.0.0.0 25
     
     /sbin/ipfwadm -O -a deny -P tcp -D 0.0.0.0/0.0.0.0 119 
     



This restricts all outgoing traffic to port 25 (The mail port) so users can not
 send mail. Since
anyone could walk up and use our workstations, we felt that it would be a bad i
dea to allow
them to send mail. Likewise we restricted port 119(the news port) so usenet acc
ess is not
allowed.  Ideally we would have liked to allow read-only usenet access from Net
scape,
however I could not figure out how to do this so decided to be safe and restric
t all usenet
access.




  Permissions.



In order to insure that your setup stays, you will want to change the permissio
ns on various
files located inside the guest users home directory. By this point you should h
ave already
created a guest user. You should also run netscape for the first time as the gu
est user before
making these changes.




     chown root /home/guestchmod 555 /home/guestchown root
     /home/guest/.fvwmrc /home/guest/.bash_profile chown root
     /home/guest/.Xdefaults /home/guest/.bashrc
     /home/guest/.bash_logoutchmod 555 /home/guest/.fvwmrc
     /home/guest/.bash_profile /home/guest/.Xdefaults
     /home/guest/.bashrc /home/guest/.bash_logoutchmod 444
     /home/guest/.netscape/preferences
     /home/guest/.netscape/bookmarks.htmlchown root
     /home/guest/.netscape/preferences
     /home/guest/.netscape/bookmarks.htm
     

The commands above were executed, first we gave root ownership of the users hom
e
directory. Changing ownership prevents the user from changing the permissions b
ack.  Then
we removed write access to the home directory.  Next we changed ownership and r
emoved
write access to the .fvwmrc file, the .bash_profile, .Xdefaults, .bash_logout,
and .bashrc. This
prevents a user from changing aspects of his environment. Finally we secured th
e netscape
preferences file, and the bookmarks file. A user can still change the settings
in netscape,
however they will not be saved, so the next person to login will be presented w
ith the default
settings.




  __________________________________________________________________________


                      Copyright  1998, Steven Singer
           Published in Issue 25 of Linux Gazette, February 1998
                                      




  __________________________________________________________________________


[ TABLE OF CONTENTS ]
[ FRONT PAGE ]
Back 
Next 

  __________________________________________________________________________



    "Linux Gazette...making Linux just a little more fun!"



  __________________________________________________________________________




                    The Software World--It's a Changin'
                                      
                               By Phil Hughes
                                      


  __________________________________________________________________________



First, let me set the scene: today is January 22.
The important events of this day are:
     * Bill Clinton is once again accused of a sexual impropriety.
     * The Pope is in Cuba.
     * Netscape has announced that that their browser is now free and
       that they will freely distribute the source code for it.
     * Microsoft has somewhat folded in its browser battle with the U.S.
       Justice Department.

The first two items are just for context--it has been an exciting day.
I am really here to discuss the last two items.

Let's get the Microsoft information out of the way first.
My understanding is that a compromise has been reached between Microsoft
and the justice department--the Internet Explorer icon
will not appear on the desktop, but the browser itself will still be
included.
As the easiest way to get a new browser is to download it off the Internet
and 90% of all personal computers today come with Microsoft Windows, it
seems that all we have done is make it a little harder for Internet Explorer to
be on 90% of the desktops.
Hopefully, there will be further developments in the Microsoft vs. the U.S. Jus
tice
Department game.

The Netscape item has two parts.
The first, making the browser available for free really is a
necessity;
90% of new personal computers come with Windows and, thus, Internet
Explorer.
Whether IE is better than anything Netscape offers or not isn't the
issue if one comes with your computer and you have to go buy and
install the other one.
Numbers back up this statement.
Netscape used to account for about 90% of the browser market while 60%
is probably the case today.

The good news for Netscape is that they have managed to shift their
revenue stream away from stand-alone client software.
Their own numbers show that in the fourth quarter of 1997 these
revenues were only 13% of total, down from 45% a year earlier.

By far the most interesting part of Netscape's announcement for the
Linux community is the fact they will
release the source code for Communicator starting with 5.0.
Sure, this will also make a change for them in the Windows arena and
may force Microsoft to make some brave decision as well, but let's look
at what this does for the Linux community.

The first thing I see is talk on the Gnome mailing list about a version of
Navigator using Gnome.
Call it Gnomescape, it is potentially a full-featured browser with a
look and feel that is likely to become the Linux standard. [For more on
Gnome see the "KDE and Gnome" article by Larry Ayers in issue
24 of Linux Gazette January 1998.]

Netscape claims they are releasing the code to allow the Internet
community to contribute to the development.
(I expect Linux helped them realize that is possible.)
For us, this can mean that instead of complaining about Netscape bugs, we
can fix them.
I expect, based on Linux history, the best, most bug-free version of
Netscape will appear on Linux systems first.

Free Communicator and free source code means that Linux systems become
a much cheaper choice for "Web Appliances".
It also means inexpensive kiosks at shopping malls, car dealers, etc.
While I am sure Netscape made this decision to help their competitive
position with Microsoft, I think we will see a huge impact on the
Linux scene.
Of course, if Linux replaces Windows as the operating system installed
on 90% of the PCs sold today, Netscape will be as happy as the Linux
community.

What's still up in the air is what sort of license the source code
will fall under.
GPL is one choice; a license more like that of BSD is another.
Check out "Linux News" and the discussion groups on our
web site to get up to the
minute information on what is happening.



  __________________________________________________________________________


                       Copyright  1998, Phil Hughes
           Published in Issue 25 of Linux Gazette, February 1998
                                      




  __________________________________________________________________________


[ TABLE OF CONTENTS ]
[ FRONT PAGE ]
Back 
Next 

  __________________________________________________________________________


                          Linux Gazette Back Page
                                      
           Copyright  1998 Specialized Systems Consultants, Inc.
For information regarding copying and distribution of this material see the
                              Copying License.
                                      



  __________________________________________________________________________



  Contents:

     * About This Month's Authors
     * Not Linux




  __________________________________________________________________________




                         About This Month's Authors
                                      



  __________________________________________________________________________





    Randy Appleton

Randy Appleton is a professor of Computer Science at Northern Michigan
University. Randy got his Ph.D. at the University of Kentucky. He has
been involved with Linux since before version 0.9. Current research
includes high performance pre-fetching file systems, with a coming port to
the 2.X version of Linux. Other interests include airplanes, especially
home-built ones.


    Larry Ayers

Larry Ayers lives on a small farm
in northern Missouri, where he is currently engaged in building a
timber-frame house for his family. He operates a portable band-saw mill,
does general woodworking, plays the fiddle and searches for rare
prairie plants, as well as growing shiitake mushrooms. He is also
struggling with configuring a Usenet news server for his local ISP.


    Jim Dennis

Jim Dennis
is the proprietor of 
Starshine Technical Services.
His professional experience includes work in the technical
support, quality assurance, and information services (MIS)
departments of software companies like
 Quarterdeck,
 Symantec/
Peter Norton Group, and
 McAfee Associates -- as well as
positions (field service rep) with smaller VAR's.
He's been using Linux since version 0.99p10 and is an active
participant on an ever-changing list of mailing lists and
newsgroups.  He's just started collaborating on the 2nd Edition
for a book on Unix systems administration.
Jim is an avid science fiction fan -- and was
married at the World Science Fiction Convention in Anaheim.


    Rick Dearman

Rick is an American living and working in the United Kingdom as
a computer programming consultant. He is currently attempting to wean
himself off late nights, coffee, and computers, on to early morning jogs
and fresh orange juice. Unfortunately it isn't working that well.


    Bernard Doyle

Bernard is a self-employed programmer/analyst in Sydney, Australia. He
mainly works on developing software for handheld pen PCs. His web page is at
http://www.moreinfo.com.au/bjd/. He hopes to set up a Web Server running
Linux at some time in the future. Comments, etc. can be sent to
bernardd@wr.com.au


    Michael J. Hammel

Michael J. Hammel,
is a transient software engineer with a background in
everything from data communications to GUI development to Interactive Cable
systems--all based in Unix. His interests outside of computers
include 5K/10K races, skiing, Thai food and gardening. He suggests if you
have any serious interest in finding out more about him, you visit his home
pages at http://www.csn.net/~mjhammel. You'll find out more
there than you really wanted to know.


    Phil Hughes

Phil Hughes is the publisher of Linux Journal, and thereby Linux
Gazette. He dreams of permanently tele-commuting from his home on the
Pacific coast of the Olympic Peninsula.
As an employer, he is "Vicious, Evil,
Mean, & Nasty, but kind of mellow" as a boss should be.


    Mike List

Mike List is a father of four teenagers, musician,
and recently reformed technophobe, who has been into computers
since April,1996, and Linux since July.


    IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Leonardo Lopes

Leonardo is originally from Brazil. He has a degree in CS and is currently a
Ph.D. candidate in Industrial Engineering at Northwestern University. He
also enjoy computers, playing soccer and guitar, and fast cars.


    IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Leonardo Lopes

Eric is studying computer
science in Toulouse, France, and is a member of the local Linux Users
Group. He enjoys programming, cycling and Led Zeppelin. He admits to
once having owned a Macintosh, but denies any connection with the the
Eric Conspiracy Secret
Labs.


    Russell C. Pavlicek

Russell is employed by Digital Equipment Corporation as a software
consultant serving US Federal Government customers in the Washington D.C.
area.  He is constantly looking for opportunities to employ Linux on the job.
He lives with his lovely wife and wonderful children in rural Maryland
where they serve Yeshua and surround themselves with a variety of furry
creatures.  His opinions are entirely his own (but he will allow you to adopt
one or two if you ask nicely).


    IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Kristian Elof Srensen

Kristian
lives in Copenhagen, Denmark where he makes database enabled web-sites,
builds intranets, programs, trains users and does other forms of
Inter/intra-net contracting work.
He has made some of the information on
The Linux Rescource Exchange,
but apart from that hasn't contributed to Linux.
When not working, he likes to study Nordic and British 19th century
philosophy and literature.


    Martin Vermeer

Martin is a European citizen born in The Netherlands in 1953
and living with his wife in Helsinki, Finland, since 1981, where he is
employed as a research professor at the Finnish Geodetic Institute.
His first UNIX experience was in 1984 with OS-9, running on a Dragon
MC6809E home computer (64k memory, 720k disk!). He is a relative newcomer
to Linux, installing RH4.0 February 1997 on his home PC and, encouraged,
only a week later on his job PC. Now he runs 5.0 at home, job soon to
follow.
Special Linux interests: LyX, Pascal (p2c), tcl/tk.



  __________________________________________________________________________




                                 Not Linux
                                      



  __________________________________________________________________________




Thanks to all our authors, not just the ones above, but also those who wrote
giving us their tips and tricks and making suggestions. Thanks also to our
new mirror sites.


Thanks to my wonderful husband, Riley, for the hard work he has done
the last three months to help get LG out. He has, however, decided that
he no longer wishes to take
full responsibility for Linux Gazette so I am once more in the
driver's seat. Whether or not I decide to outsource it again remains to be
decided.

In the meantime, I'm having fun and enjoying all the mail and good articles
that you guys have been sending in. Lots of you have subscribed to our
announcement service and it seems to be working well -- no complaints!

Linux Journal has redesigned its Linux Resources Page.
Check it out and give us your comments and suggestions. We'd like these
pages to be community effort and will provide space for discussion groups
and Linux projects. Just get in touch with our webmaster.

Have fun!



Marjorie L. Richardson

Editor, Linux Gazette, gazette@ssc.com


  __________________________________________________________________________



[ TABLE OF CONTENTS ]
[ FRONT PAGE ]
Back 
  __________________________________________________________________________

Linux Gazette Issue 25, February 1998,
http://www.linuxgazette.com/

This page written and maintained by the Editor of Linux Gazette,
 gazette@ssc.com