diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/Makefile linuxconf-1.16r9/Makefile *** linuxconf-1.16r8/Makefile Fri Nov 19 00:04:12 1999 --- linuxconf-1.16r9/Makefile Tue Nov 23 11:34:46 1999 *************** *** 210,214 **** misc/misc.h misc/sstring.h misc/configf.h misc/fviews.h misc/confdb.h \ misc/misc.p misc/module.h misc/popen.h misc/sstream.h \ ! misc/subsys.h \ netconf/daemoni.h translate/translat.h \ userconf/userconf.h userconf/userconf.p userconf/usercomng.h \ --- 210,214 ---- misc/misc.h misc/sstring.h misc/configf.h misc/fviews.h misc/confdb.h \ misc/misc.p misc/module.h misc/popen.h misc/sstream.h \ ! misc/subsys.h misc/module_api.h \ netconf/daemoni.h translate/translat.h \ userconf/userconf.h userconf/userconf.p userconf/usercomng.h \ diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/dialog/menubox.cc linuxconf-1.16r9/dialog/menubox.cc *** linuxconf-1.16r8/dialog/menubox.cc Wed Oct 27 19:06:01 1999 --- linuxconf-1.16r9/dialog/menubox.cc Tue Nov 23 15:17:50 1999 *************** *** 376,379 **** --- 376,381 ---- bool may_select) { + if (prompt1==NULL) prompt1 = "(null)"; + if (prompt2==NULL) prompt2 = "(null)"; if (strcmp(prompt1,"-")==0){ /* #Specification: dialog / menus / splitter diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/help.files/cfr/main/introweb.html linuxconf-1.16r9/help.files/cfr/main/introweb.html *** linuxconf-1.16r8/help.files/cfr/main/introweb.html Fri Nov 19 11:59:57 1999 --- linuxconf-1.16r9/help.files/cfr/main/introweb.html Tue Nov 23 13:04:53 1999 *************** *** 1,8 **** ! Linuxconf 1.16r7.1 !

Linuxconf 1.16r7.1


1. Qu'est-ce que Linuxconf

--- 1,8 ---- ! Linuxconf 1.16r8 !

Linuxconf 1.16r8


1. Qu'est-ce que Linuxconf

diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/help.files/es/main/introweb.html linuxconf-1.16r9/help.files/es/main/introweb.html *** linuxconf-1.16r8/help.files/es/main/introweb.html Fri Nov 19 12:00:16 1999 --- linuxconf-1.16r9/help.files/es/main/introweb.html Tue Nov 23 13:05:12 1999 *************** *** 1,8 **** ! Linuxconf 1.16r7.1 !

Linuxconf 1.16r7.1


1. ¿Qué es Linuxconf?

--- 1,8 ---- ! Linuxconf 1.16r8 !

Linuxconf 1.16r8


1. ¿Qué es Linuxconf?

diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/help.files/fi/main/introweb.html linuxconf-1.16r9/help.files/fi/main/introweb.html *** linuxconf-1.16r8/help.files/fi/main/introweb.html Fri Nov 19 12:00:31 1999 --- linuxconf-1.16r9/help.files/fi/main/introweb.html Tue Nov 23 13:05:27 1999 *************** *** 1,8 **** ! Linuxconf 1.16r7.1 !

Linuxconf 1.16r7.1


1. Mikä Linuxconf?

--- 1,8 ---- ! Linuxconf 1.16r8 !

Linuxconf 1.16r8


1. Mikä Linuxconf?

diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/help.files/fr/main/introweb.html linuxconf-1.16r9/help.files/fr/main/introweb.html *** linuxconf-1.16r8/help.files/fr/main/introweb.html Fri Nov 19 12:00:46 1999 --- linuxconf-1.16r9/help.files/fr/main/introweb.html Tue Nov 23 13:05:42 1999 *************** *** 1,5 **** ! Linuxconf 1.16r7.1 --- 1,5 ---- ! Linuxconf 1.16r8 *************** *** 10,14 **** !

Linuxconf 1.16r7.1


--- 10,14 ---- !

Linuxconf 1.16r8


diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/help.files/it/main/introweb.html linuxconf-1.16r9/help.files/it/main/introweb.html *** linuxconf-1.16r8/help.files/it/main/introweb.html Fri Nov 19 12:01:03 1999 --- linuxconf-1.16r9/help.files/it/main/introweb.html Tue Nov 23 13:06:02 1999 *************** *** 1,8 **** ! Linuxconf 1.16r7.1 !

Linuxconf 1.16r7.1


1. Cos'é Linuxconf

--- 1,8 ---- ! Linuxconf 1.16r8 !

Linuxconf 1.16r8


1. Cos'é Linuxconf

diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/help.files/no/main/introweb.html linuxconf-1.16r9/help.files/no/main/introweb.html *** linuxconf-1.16r8/help.files/no/main/introweb.html Fri Nov 19 12:01:32 1999 --- linuxconf-1.16r9/help.files/no/main/introweb.html Tue Nov 23 13:06:29 1999 *************** *** 1,8 **** ! Linuxconf 1.16r7.1 !

Linuxconf 1.16r7.1


1. Hva er Linuxconf

--- 1,8 ---- ! Linuxconf 1.16r8 !

Linuxconf 1.16r8


1. Hva er Linuxconf

diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/help.files/pt/main/introweb.html linuxconf-1.16r9/help.files/pt/main/introweb.html *** linuxconf-1.16r8/help.files/pt/main/introweb.html Fri Nov 19 12:01:49 1999 --- linuxconf-1.16r9/help.files/pt/main/introweb.html Tue Nov 23 13:06:46 1999 *************** *** 1,8 **** ! Configurador Linux 1.16r7.1 !

Configurador Linux 1.16r7.1


O que é o Configurador Linux

--- 1,8 ---- ! Configurador Linux 1.16r8 !

Configurador Linux 1.16r8


O que é o Configurador Linux

diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/help.files/ro/main/introweb.html linuxconf-1.16r9/help.files/ro/main/introweb.html *** linuxconf-1.16r8/help.files/ro/main/introweb.html Fri Nov 19 12:02:08 1999 --- linuxconf-1.16r9/help.files/ro/main/introweb.html Tue Nov 23 13:07:06 1999 *************** *** 1,8 **** ! Linuxconf 1.16r7.1 !

Linuxconf 1.16r7.1


1. Ce este Linuxconf

--- 1,8 ---- ! Linuxconf 1.16r8 !

Linuxconf 1.16r8


1. Ce este Linuxconf

diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/help.files/se/main/introweb.html linuxconf-1.16r9/help.files/se/main/introweb.html *** linuxconf-1.16r8/help.files/se/main/introweb.html Fri Nov 19 12:02:23 1999 --- linuxconf-1.16r9/help.files/se/main/introweb.html Tue Nov 23 13:07:21 1999 *************** *** 1,8 **** ! Linuxconf 1.16r7.1 !

Linuxconf 1.16r7.1


1. What is Linuxconf

--- 1,8 ---- ! Linuxconf 1.16r8 !

Linuxconf 1.16r8


1. What is Linuxconf

diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/help.files/sk/main/introweb.html linuxconf-1.16r9/help.files/sk/main/introweb.html *** linuxconf-1.16r8/help.files/sk/main/introweb.html Fri Nov 19 12:02:41 1999 --- linuxconf-1.16r9/help.files/sk/main/introweb.html Tue Nov 23 13:07:38 1999 *************** *** 2,9 **** ! Linuxconf 1.16r7.1 !

Linuxconf 1.16r7.1


1. Èo je Linuxconf

--- 2,9 ---- ! Linuxconf 1.16r8 !

Linuxconf 1.16r8


1. Èo je Linuxconf

diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/help.files/sources/redhat/passwd-1.html linuxconf-1.16r9/help.files/sources/redhat/passwd-1.html *** linuxconf-1.16r8/help.files/sources/redhat/passwd-1.html Wed Dec 31 19:00:00 1969 --- linuxconf-1.16r9/help.files/sources/redhat/passwd-1.html Thu Nov 25 22:33:20 1999 *************** *** 0 **** --- 1,41 ---- + + + + + Changing a Password: What is a Good Password? + + + + + + Next + Previous + Contents +
+

1. What is a Good Password?

+ +

+

A good password is difficult to crack or guess. A password must be at least six + characters long. (Note that you can increase the required length and set other + parameters for users' passwords on the Users Accounts--Password & Account + Policies screen.) If you've chosen a good password, the longer it is, the more + difficult it is to crack. Only the first eight characters are meaningful unless + your system uses MD5 passwords. If MD5 passwords are enabled, your system will + accept passwords that are longer than eight characters. +

Good passwords contain a combination of letters, numbers, and special + characters. It should use both upper case and lower case letters. Don't use + your username, your anniversary, your social security number, your dog's name, + your middle name or the word root. Don't use any variation of a word associated + with your account. Don't use a word that can be found in a dictionary; + dictionary words are easy to crack. +

A simple technique for creating a password is to use the first letters from each + word of a phrase that is familiar to you (a line from a favorite song might be + appropriate). Insert a few numbers and/or special characters in place of + letters and you'll have a decent password. +

+


+ Next + Previous + Contents + + diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/help.files/sources/redhat/passwd-2.html linuxconf-1.16r9/help.files/sources/redhat/passwd-2.html *** linuxconf-1.16r8/help.files/sources/redhat/passwd-2.html Wed Dec 31 19:00:00 1969 --- linuxconf-1.16r9/help.files/sources/redhat/passwd-2.html Thu Nov 25 22:33:20 1999 *************** *** 0 **** --- 1,33 ---- + + + + + Changing a Password: Changing a Password + + + + + Next + Previous + Contents +
+

2. Changing a Password

+ +

+

First you'll need to type in the new password. Your system may run some simple + tests on the password. If it tests the password and determines that the + password may be easy to crack, you'll get a message stating that the system + thinks it is a bad password. If the system disapproves, you shouldn't use that + password. +

You'll need to type in the password twice, to make sure that you didn't + accidentally include any typos when you typed it in the first time. +

When you type in your password, linuxconf won't display your password on the + screen (you'll see a line of asterisks instead). This precaution is necessary + to prevent someone standing behind you from seeing your password. +

+


+ Next + Previous + Contents + + diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/help.files/sources/redhat/passwd.html linuxconf-1.16r9/help.files/sources/redhat/passwd.html *** linuxconf-1.16r8/help.files/sources/redhat/passwd.html Wed Dec 31 19:00:00 1969 --- linuxconf-1.16r9/help.files/sources/redhat/passwd.html Thu Nov 25 22:33:20 1999 *************** *** 0 **** --- 1,32 ---- + + + + + Changing a Password + + + + + + Next + Previous + Contents +
+

Changing a Password

+ +

Carole Williams, carole@redhat.com

+


+ Good passwords are an essential part of system security. +
+

+

1. What is a Good Password?

+ +

+

2. Changing a Password

+ +
+ Next + Previous + Contents + + diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/help.files/sources/redhat/passwd.sgml linuxconf-1.16r9/help.files/sources/redhat/passwd.sgml *** linuxconf-1.16r8/help.files/sources/redhat/passwd.sgml Wed Dec 31 19:00:00 1969 --- linuxconf-1.16r9/help.files/sources/redhat/passwd.sgml Thu Nov 25 22:10:20 1999 *************** *** 0 **** --- 1,65 ---- + +
+ Changing a Password + <author>Carole Williams, <tt/carole@redhat.com/ + + <abstract> + Good passwords are an essential part of system security. + </abstract> + + <toc> + + <sect>What is a Good Password? + <p> + + A good password is difficult to crack or guess. A password must be at least six + characters long. (Note that you can increase the required length and set other + parameters for users' passwords on the Users Accounts--Password & Account + Policies screen.) If you've chosen a good password, the longer it is, the more + difficult it is to crack. Only the first eight characters are meaningful unless + your system uses MD5 passwords. If MD5 passwords are enabled, your system will + accept passwords that are longer than eight characters. + + Good passwords contain a combination of letters, numbers, and special + characters. It should use both upper case and lower case letters. Don't use + your username, your anniversary, your social security number, your dog's name, + your middle name or the word root. Don't use any variation of a word associated + with your account. Don't use a word that can be found in a dictionary; + dictionary words are easy to crack. + + A simple technique for creating a password is to use the first letters from each + word of a phrase that is familiar to you (a line from a favorite song might be + appropriate). Insert a few numbers and/or special characters in place of + letters and you'll have a decent password. + + <sect>Changing a Password + <p> + + First you'll need to type in the new password. Your system may run some simple + tests on the password. If it tests the password and determines that the + password may be easy to crack, you'll get a message stating that the system + thinks it is a bad password. If the system disapproves, you shouldn't use that + password. + + You'll need to type in the password twice, to make sure that you didn't + accidentally include any typos when you typed it in the first time. + + When you type in your password, linuxconf won't display your password on the + screen (you'll see a line of asterisks instead). This precaution is necessary + to prevent someone standing behind you from seeing your password. + + </article> + + + + + + + + + + + + + + diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/help.files/sources/userconf/cron-1.html linuxconf-1.16r9/help.files/sources/userconf/cron-1.html *** linuxconf-1.16r8/help.files/sources/userconf/cron-1.html Wed Dec 31 19:00:00 1969 --- linuxconf-1.16r9/help.files/sources/userconf/cron-1.html Thu Nov 25 22:28:25 1999 *************** *** 0 **** --- 1,28 ---- + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> + <HTML> + <HEAD> + <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.7"> + <TITLE>Scheduling Jobs for Automatic Execution: Activating or Deactivating the Entry + + + + + + Next + Previous + Contents +
+

1. Activating or Deactivating the Entry

+ +

+

By default, new entries are active. Un-select "This entry is active" if you want + to suspend the running of a process. You could instead delete the task, but if + you're going to begin running it again in the future, deactivating it is more + convenient. +

+


+ Next + Previous + Contents + + diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/help.files/sources/userconf/cron-2.html linuxconf-1.16r9/help.files/sources/userconf/cron-2.html *** linuxconf-1.16r8/help.files/sources/userconf/cron-2.html Wed Dec 31 19:00:00 1969 --- linuxconf-1.16r9/help.files/sources/userconf/cron-2.html Thu Nov 25 22:28:25 1999 *************** *** 0 **** --- 1,31 ---- + + + + + Scheduling Jobs for Automatic Execution: Setting a Command To Be Repeated + + + + + + Next + Previous + Contents +
+

2. Setting a Command To Be Repeated

+ +

+

Any valid command can be typed into the Command box. You may want to include + the complete path to the command, to be absolutely sure that the command is + found. +

If the command is very long and complex, you can instead create a shell script + to run the command and then type the command to run the shell script into the + command box, like the following example: +

sh name_of_your_script +

+


+ Next + Previous + Contents + + diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/help.files/sources/userconf/cron-3.html linuxconf-1.16r9/help.files/sources/userconf/cron-3.html *** linuxconf-1.16r8/help.files/sources/userconf/cron-3.html Wed Dec 31 19:00:00 1969 --- linuxconf-1.16r9/help.files/sources/userconf/cron-3.html Thu Nov 25 22:28:25 1999 *************** *** 0 **** --- 1,100 ---- + + + + + Scheduling Jobs for Automatic Execution: Setting When the Command Should Run + + + + + + Next + Previous + Contents +
+

3. Setting When the Command Should Run

+ +

+

You need to specify exactly when you want the recurring command to run. The + cron daemon wakes up every minute and checks to see if a process is + scheduled. The process will only run when all of the fields are true (except for + the days of the month and days of the week fields). +

The days of the month and days of the week fields both specify days for a + process to be run. If neither of the two fields are *, then processes will run + if either of the two fields or both are true. If one of the two fields is *, + then the process will run whenever the other field is true. If both fields are + *, then the process runs every day. +

If you need to adjust system time forward (for example, during daylight savings + time), any jobs that were scheduled to run during the skipped time will not be + run. If time is adjusted backwards (again, daylight savings time is the + example), then a job may be processed twice. +

If you're adding a recurring process to an already heavily loaded server, you + should be aware of when other processes are scheduled. Big jobs are best + scheduled for when the system is not heavily loaded. For most systems, this + would normally be at night, but it depends upon your system and your setup. +

An asterisk (*) indicates that the process should run every time period (for + example, a * in the "Months" field indicates that the process should run every + month). +

A hyphen (-) indicates that the job should be processed during a certain range + of time, including the endpoints. For example, 2-5 in the month field indicates + that the job will be processed in February, March, April and May. +

Commas (,) should be used to separate specific entries for a time period. For + example, a 5,6,11 in the month field indicates that the job will be processed in + May, June and November. Commas can also separate ranges of numbers (for + example, 1-3,6-9 in the month field would mean January through March and June + through September). +

A range of values, or an *, followed by a forward slash (/) and a number is used + to step through the range of values. So a 2-10/2 in the months field indicates + every other month from February through October (in other words: February, + April, June, August and October). A */5 in the day field would run on every + fifth day of the appropriate month(s): the 1st, the 6th, the 11th, and so on. +

+

+

+

Months

January is 1, February is 2...December is 12. Alternatively, you + can use the first three letters of the month: jan, feb, mar, apr, may, jun, jul, + aug, sep, oct, nov and dec. Examples: +

1-6 is every month from January through June, including January and June. +

1,6,12 means January, June and December. +

1-12/3 or */3 both mean every third month starting with January (in other words, + January, April, July, October). +

1-12 or * means every month. +

+

Days of the month

The days of the month are from 1 to 31 (remember that + some months may not have a 29th, 30th or 31st. So if you schedule a job to run + on the 31st of every month, it will not be run during certain months). Examples: +

1,15,28 means the 1st, 15th and 28th of the month. +

A 2-10 means the 2nd day through the 10th day of a month, including the 2nd and + 10th. +

1-31 or * means every day of the month. If the days of the week field is also *, + the process will run every day. If 1-31 or * is in the days of the month field, + and a restricted value (something besides *) is in the days of the week field, + the job will run when the days of the week field is true. +

+

Days of the week

Sunday is 0, Monday is 1, Tuesday is 2...Saturday is + 6. Alternatively, you can use the first three letters of the day: sun, mon, tue, + wed, thu, fri, sat. Examples: +

2,4,6 means Tuesday, Thursday, and Saturday. +

0-6 or * means every day of the week. If the days of the month field is also *, + the job will run every day. 0-6 or * plus a restricted value (something besides + *) in the days of the month field means that the job will only run when the days + of the month field is true. +

+

Hours

The hours of the day run from 0 (midnight) to 23 (11 + p.m.). Examples: +

0,1,2 means the 0000 (midnight), 0100 (1 a.m.) and 0200 (2 a.m.) hours. +

0-23/2 and */2 mean 0000, 0200, 0400...2200. +

+

Minutes

The minutes in an hour run from 0 to 59. Examples: +

0,30 means on the hour and at the half hour. +

0-59/5 and */5 mean every five minutes during the hour, beginning at the hour + (so on the hour, at five minutes past, at ten minutes past...). +

+

+

+


+ Next + Previous + Contents + + diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/help.files/sources/userconf/cron-4.html linuxconf-1.16r9/help.files/sources/userconf/cron-4.html *** linuxconf-1.16r8/help.files/sources/userconf/cron-4.html Wed Dec 31 19:00:00 1969 --- linuxconf-1.16r9/help.files/sources/userconf/cron-4.html Thu Nov 25 22:28:26 1999 *************** *** 0 **** --- 1,62 ---- + + + + + Scheduling Jobs for Automatic Execution: Examples + + + + + Next + Previous + Contents +
+

4. Examples

+ +

+

+
+         Months            *
+         Days of the month *
+         Days of the week  *
+         Hours             0
+         Minutes           5
+         
+ 
+
+

This setup would run a process every day, at five minutes past midnight. +

+

+
+         Months            *
+         Days of the month *
+         Days of the week  0,3,6
+         Hours             2
+         Minutes           10
+         
+ 
+
+

This setup would run a process on every Sunday, Wednesday, + and Saturday, at 2:10 a.m. +

+

+
+         Months            *
+         Days of the month 1,15,31
+         Days of the week  2
+         Hours             1
+         Minutes           10
+         
+ 
+
+

This setup would run a process during every month, on the 1st, 15th and 31st, + and on every Tuesday, at 1:10 a.m. Obviously, you'll probably never need to + schedule a job like this, but the example illustrates how the days of the month + and days of the week fields are combined, if neither field is *. +

+


+ Next + Previous + Contents + + diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/help.files/sources/userconf/cron.html linuxconf-1.16r9/help.files/sources/userconf/cron.html *** linuxconf-1.16r8/help.files/sources/userconf/cron.html Wed Dec 31 19:00:00 1969 --- linuxconf-1.16r9/help.files/sources/userconf/cron.html Thu Nov 25 22:28:26 1999 *************** *** 0 **** --- 1,43 ---- + + + + + Scheduling Jobs for Automatic Execution + + + + + + Next + Previous + Contents +
+

Scheduling Jobs for Automatic Execution

+ +

Carole Williams, carole@redhat.com

+


+ You can set up processes to run repeatedly, at specific times, without any human + intervention needed. Examples of such processes may be logfile analyzers, + network or security monitoring tools, filesystem maintenance jobs, and others. + To save you from having to run these jobs manually, the cron daemon can be set + to automatically run these types of processes at times you specify. Each + process will run as the user associated with the task. +
+

+

1. Activating or Deactivating the Entry

+ +

+

2. Setting a Command To Be Repeated

+ +

+

3. Setting When the Command Should Run

+ +

+

4. Examples

+ +
+ Next + Previous + Contents + + diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/help.files/sources/userconf/cron.sgml linuxconf-1.16r9/help.files/sources/userconf/cron.sgml *** linuxconf-1.16r8/help.files/sources/userconf/cron.sgml Wed Dec 31 19:00:00 1969 --- linuxconf-1.16r9/help.files/sources/userconf/cron.sgml Thu Nov 25 22:28:14 1999 *************** *** 0 **** --- 1,184 ---- + +
+ Scheduling Jobs for Automatic Execution + <author>Carole Williams, <tt/carole@redhat.com/ + + <abstract> + You can set up processes to run repeatedly, at specific times, without any human + intervention needed. Examples of such processes may be logfile analyzers, + network or security monitoring tools, filesystem maintenance jobs, and others. + To save you from having to run these jobs manually, the cron daemon can be set + to automatically run these types of processes at times you specify. Each + process will run as the user associated with the task. + </abstract> + + <toc> + + <sect>Activating or Deactivating the Entry + <p> + + By default, new entries are active. Un-select "This entry is active" if you want + to suspend the running of a process. You could instead delete the task, but if + you're going to begin running it again in the future, deactivating it is more + convenient. + + <sect>Setting a Command To Be Repeated + <p> + + Any valid command can be typed into the Command box. You may want to include + the complete path to the command, to be absolutely sure that the command is + found. + + If the command is very long and complex, you can instead create a shell script + to run the command and then type the command to run the shell script into the + command box, like the following example: + + <TT>sh name_of_your_script</TT> + + <sect>Setting When the Command Should Run + <P> + + You need to specify exactly when you want the recurring command to run. The + cron daemon wakes up every minute and checks to see if a process is + scheduled. The process will only run when all of the fields are true (except for + the days of the month and days of the week fields). + + The days of the month and days of the week fields both specify days for a + process to be run. If neither of the two fields are *, then processes will run + if either of the two fields or both are true. If one of the two fields is *, + then the process will run whenever the other field is true. If both fields are + *, then the process runs every day. + + If you need to adjust system time forward (for example, during daylight savings + time), any jobs that were scheduled to run during the skipped time will not be + run. If time is adjusted backwards (again, daylight savings time is the + example), then a job may be processed twice. + + If you're adding a recurring process to an already heavily loaded server, you + should be aware of when other processes are scheduled. Big jobs are best + scheduled for when the system is not heavily loaded. For most systems, this + would normally be at night, but it depends upon your system and your setup. + + An asterisk (*) indicates that the process should run every time period (for + example, a * in the "Months" field indicates that the process should run every + month). + + A hyphen (-) indicates that the job should be processed during a certain range + of time, including the endpoints. For example, 2-5 in the month field indicates + that the job will be processed in February, March, April and May. + + Commas (,) should be used to separate specific entries for a time period. For + example, a 5,6,11 in the month field indicates that the job will be processed in + May, June and November. Commas can also separate ranges of numbers (for + example, 1-3,6-9 in the month field would mean January through March and June + through September). + + A range of values, or an *, followed by a forward slash (/) and a number is used + to step through the range of values. So a 2-10/2 in the months field indicates + every other month from February through October (in other words: February, + April, June, August and October). A */5 in the day field would run on every + fifth day of the appropriate month(s): the 1st, the 6th, the 11th, and so on. + + <descrip> + + <tag/Months/ January is 1, February is 2...December is 12. Alternatively, you + can use the first three letters of the month: jan, feb, mar, apr, may, jun, jul, + aug, sep, oct, nov and dec. Examples: + + 1-6 is every month from January through June, including January and June. + + 1,6,12 means January, June and December. + + 1-12/3 or */3 both mean every third month starting with January (in other words, + January, April, July, October). + + 1-12 or * means every month. + + <tag/Days of the month/ The days of the month are from 1 to 31 (remember that + some months may not have a 29th, 30th or 31st. So if you schedule a job to run + on the 31st of every month, it will not be run during certain months). Examples: + + 1,15,28 means the 1st, 15th and 28th of the month. + + A 2-10 means the 2nd day through the 10th day of a month, including the 2nd and + 10th. + + 1-31 or * means every day of the month. If the days of the week field is also *, + the process will run every day. If 1-31 or * is in the days of the month field, + and a restricted value (something besides *) is in the days of the week field, + the job will run when the days of the week field is true. + + <tag/Days of the week/ Sunday is 0, Monday is 1, Tuesday is 2...Saturday is + 6. Alternatively, you can use the first three letters of the day: sun, mon, tue, + wed, thu, fri, sat. Examples: + + 2,4,6 means Tuesday, Thursday, and Saturday. + + 0-6 or * means every day of the week. If the days of the month field is also *, + the job will run every day. 0-6 or * plus a restricted value (something besides + *) in the days of the month field means that the job will only run when the days + of the month field is true. + + <tag/Hours/ The hours of the day run from 0 (midnight) to 23 (11 + p.m.). Examples: + + 0,1,2 means the 0000 (midnight), 0100 (1 a.m.) and 0200 (2 a.m.) hours. + + 0-23/2 and */2 mean 0000, 0200, 0400...2200. + + <tag/Minutes/ The minutes in an hour run from 0 to 59. Examples: + + 0,30 means on the hour and at the half hour. + + 0-59/5 and */5 mean every five minutes during the hour, beginning at the hour + (so on the hour, at five minutes past, at ten minutes past...). + + </descrip> + + <sect>Examples + <p> + <tscreen><verb> + Months * + Days of the month * + Days of the week * + Hours 0 + Minutes 5 + </verb></tscreen> + + This setup would run a process every day, at five minutes past midnight. + + <tscreen><verb> + Months * + Days of the month * + Days of the week 0,3,6 + Hours 2 + Minutes 10 + </verb></tscreen> + + This setup would run a process on every Sunday, Wednesday, + and Saturday, at 2:10 a.m. + + <tscreen><verb> + Months * + Days of the month 1,15,31 + Days of the week 2 + Hours 1 + Minutes 10 + </verb></tscreen> + + This setup would run a process during every month, on the 1st, 15th and 31st, + and on every Tuesday, at 1:10 a.m. Obviously, you'll probably never need to + schedule a job like this, but the example illustrates how the days of the month + and days of the week fields are combined, if neither field is *. + + </article> + + + + + + + + + + diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/help.files/sources/userconf/delaccount-1.html linuxconf-1.16r9/help.files/sources/userconf/delaccount-1.html *** linuxconf-1.16r8/help.files/sources/userconf/delaccount-1.html Wed Dec 31 19:00:00 1969 --- linuxconf-1.16r9/help.files/sources/userconf/delaccount-1.html Thu Nov 25 22:31:10 1999 *************** *** 0 **** --- 1,36 ---- + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> + <HTML> + <HEAD> + <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.7"> + <TITLE>Deleting an Account: Archiving the Account's Data + + + + + + Next + Previous + Contents +
+

1. Archiving the Account's Data

+ +

+

If you delete an account, you can choose to archive the account's data. The + user's files will be tarred, gzipped and saved in the oldaccounts + directory in the default home directory. +

For example, if you're archiving a login account's data, the user's home + directory (probably /home/username) and the user's e-mail inbox + (probably /var/spool/mail/username) will be tarred, gzipped and saved + in the /home/oldaccounts directory. These paths will vary according to + the default home directory on your system. +

If you decide at a later time that you need data from the user's files, you can + use tar and gzip to recover the files. If you need to conserve storage space, + you may choose to move the tarred and gzipped file to a storage site off your + system. +

+


+ Next + Previous + Contents + + diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/help.files/sources/userconf/delaccount-2.html linuxconf-1.16r9/help.files/sources/userconf/delaccount-2.html *** linuxconf-1.16r8/help.files/sources/userconf/delaccount-2.html Wed Dec 31 19:00:00 1969 --- linuxconf-1.16r9/help.files/sources/userconf/delaccount-2.html Thu Nov 25 22:31:10 1999 *************** *** 0 **** --- 1,28 ---- + + + + + Deleting an Account: Deleting the Account's Data + + + + + + Next + Previous + Contents +
+

2. Deleting the Account's Data

+ +

+

If you choose to delete the account's data when deleting an account, the files + in the account's home directory and e-mail inbox file will be deleted from the + system. Don't choose this option unless you're absolutely certain that you + won't need any of the account's data in the future. +

+


+ Next + Previous + Contents + + diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/help.files/sources/userconf/delaccount-3.html linuxconf-1.16r9/help.files/sources/userconf/delaccount-3.html *** linuxconf-1.16r8/help.files/sources/userconf/delaccount-3.html Wed Dec 31 19:00:00 1969 --- linuxconf-1.16r9/help.files/sources/userconf/delaccount-3.html Thu Nov 25 22:31:10 1999 *************** *** 0 **** --- 1,25 ---- + + + + + Deleting an Account: Leaving the Account's Data in Place + + + + + Next + Previous + Contents +
+

3. Leaving the Account's Data in Place

+ +

+

If you delete an account, but leave the account's data in place, the account's + home directory and e-mail inbox will remain in place on your system. +

+


+ Next + Previous + Contents + + diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/help.files/sources/userconf/delaccount.html linuxconf-1.16r9/help.files/sources/userconf/delaccount.html *** linuxconf-1.16r8/help.files/sources/userconf/delaccount.html Wed Dec 31 19:00:00 1969 --- linuxconf-1.16r9/help.files/sources/userconf/delaccount.html Thu Nov 25 22:31:10 1999 *************** *** 0 **** --- 1,40 ---- + + + + + Deleting an Account + + + + + + Next + Previous + Contents +
+

Deleting an Account

+ +

Carole Williams, carole@redhat.com

+


+ When you delete an account, you need to decide what to do with the account's + files. Remember that you can disable the account instead of deleting it. If + there's a chance that the account will need to be activated in the future, you + should just disable it (de-select "The account is enabled" on the screen + containing the account's information). If you're absolutely sure that no one + will need the account in the future, then you may want to delete the account. +
+

+

1. Archiving the Account's Data

+ +

+

2. Deleting the Account's Data

+ +

+

3. Leaving the Account's Data in Place

+ +
+ Next + Previous + Contents + + diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/help.files/sources/userconf/delaccount.sgml linuxconf-1.16r9/help.files/sources/userconf/delaccount.sgml *** linuxconf-1.16r8/help.files/sources/userconf/delaccount.sgml Wed Dec 31 19:00:00 1969 --- linuxconf-1.16r9/help.files/sources/userconf/delaccount.sgml Thu Nov 25 22:10:25 1999 *************** *** 0 **** --- 1,60 ---- + +
+ Deleting an Account + <author>Carole Williams, <tt/carole@redhat.com/ + + <abstract> + When you delete an account, you need to decide what to do with the account's + files. Remember that you can disable the account instead of deleting it. If + there's a chance that the account will need to be activated in the future, you + should just disable it (de-select "The account is enabled" on the screen + containing the account's information). If you're absolutely sure that no one + will need the account in the future, then you may want to delete the account. + </abstract> + + <toc> + + <sect>Archiving the Account's Data + <p> + + If you delete an account, you can choose to archive the account's data. The + user's files will be tarred, gzipped and saved in the <TT>oldaccounts</TT> + directory in the default home directory. + + For example, if you're archiving a login account's data, the user's home + directory (probably <TT>/home/username</TT>) and the user's e-mail inbox + (probably <TT>/var/spool/mail/username</TT>) will be tarred, gzipped and saved + in the <TT>/home/oldaccounts</TT> directory. These paths will vary according to + the default home directory on your system. + + If you decide at a later time that you need data from the user's files, you can + use tar and gzip to recover the files. If you need to conserve storage space, + you may choose to move the tarred and gzipped file to a storage site off your + system. + + <sect>Deleting the Account's Data + <p> + + If you choose to delete the account's data when deleting an account, the files + in the account's home directory and e-mail inbox file will be deleted from the + system. Don't choose this option unless you're absolutely certain that you + won't need any of the account's data in the future. + + <sect>Leaving the Account's Data in Place + <p> + + If you delete an account, but leave the account's data in place, the account's + home directory and e-mail inbox will remain in place on your system. + + </article> + + + + + + + + + + + diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/messages/se/fetchmailconf.dic linuxconf-1.16r9/messages/se/fetchmailconf.dic *** linuxconf-1.16r8/messages/se/fetchmailconf.dic Wed Dec 31 19:00:00 1969 --- linuxconf-1.16r9/messages/se/fetchmailconf.dic Thu Nov 25 17:42:31 1999 *************** *** 0 **** --- 1,413 ---- + @version 0 + !T_FETCHMAIL_COMNG + :E Fetch mail + :T Hämta post + !F_SCHEDULE_CRON + :E By cron + :T Av cron + !F_SCHEDULE + :E Start + :T Starta: + !E_SCHEDULE_CRON + :E You can't schedule a continually\nrunning process + :T Du kan inte schemalägga en process som\naldrig avslutas + !F_SCHEDULE_MANUAL + :E Manually + :T Manuellt + !F_SCHEDULE_DAEMON + :E At boot + :T Vid uppstart + !F_CREATE + :E Configuration file + :T Inställningsfil:le + !X_KILLFETCHMAIL + :E Killing fetchmail\n + :T Stoppar fetchmail\n + !E_SCHEDULE_DAEMON + :E Sorry, it is not possible to have\n + +a boot time start up without interval\n + +specified + :T Tyvärr kan du inte starta processen vid\nmaskinstart utan intervall. + !E_SCHEDULE_DAEMON_UNFINISHED + :E Sorry, start at boot not finished yet + :T Tyvärr är aktivering vid\nuppstart inte klart än + !O_FETCHMAIL + :E Schedule mail retrieval + :T Schemalägg posthämtning + !E_SCHEDULE + :E You can't schedule a continually running process + :T Det går inte att schemalägga en process som\när igång hela tiden. + !F_SCHEDULE_MANUALLY + :E Manually + :T Manuellt + !F_SCHEDULE_BOOT + :E At boot + :T Vid uppstart + !T_FETCHMAILCONF + :E Remote mail servers (fetchmail) + :T Hämta post (fetchmail) + !M_FETCHMAILCONF + :E Remote mail servers (fetchmail) + :T Hämta post (fetchmail) + !F_SDPS + :E (POP3 SDPS extensions) + :T (POP3 SDPS tillägg) + !E_SERVERNAME + :E Name of mail server must be supplied + :T Postkontorets namn måste anges + !E_REMOTEUSERNAME + :E Remote user name in mail\nserver must be supplied + :T Användarnamn i postkontor\nmåste anges + !T_PRIVFETCHMAILBASICS + :E Fetchmail basics + :T Fetchmail grundinställningar + !T_PRIVILEGE + :E 9-Fetchmail + :T 9-Fetchmail + !T_PRIVFETCHMAILSERVER + :E Fetchmail server + :T Fetchmail server + !T_PRIVFETCHMAILUSERID + :E Fetchmail users + :T Fetchmail användare + !P_EDITBASICS + :E change basic configuration + :T ändra grundinställning + !P_EDITSERVER + :E change server configuration + :T ändra server-inställning + !P_EDITUSERS + :E change user configuration + :T ändra användarinställning + !P_SEEUSERS + :E see user configuration + :T se användarinställning + !T_PRIVBASICS + :E Basics administrator + :T Grundinställningar + !F_DAEMON + :E Poll interval in seconds + :T Uppkopplingsintervall (sek): + !F_LOGFILE + :E Log to file + :T Logga i fil: + !F_SYSLOG + :E Log messages + :T Loggmeddelanden: + !F_SYSLOGTITLE + :E Log messages to system log + :T Logga meddelanden i systemlogg + !F_BOUNCEMAIL + :E Return to sender + :T Retur avsändaren + !F_FORWARD_POSTMASTER + :E Forward to postmaster + :T Postansvarig + !F_BOUNCEMAILPROMPT + :E Incorrect mail address + :T Felaktig postadress: + !F_POSTMASTER + :E Postmaster + :T Postansvarig: + !T_BASICS + :E Remote mail retreival basics + :T Grundinställning för brevhämtning + !I_BASICS + :E This is where you enter basic information for mail\n + +retreival from one or more remote mail servers.\n + +\n + +If poll interval is zero fetchmail must be scheduled\n + +to run automatically, started manually or automatically\n + +started at boot time for a one time retreival.\n + +\n + +If poll interval is greater than zero fetchmail runs\n + +continuously and fetches mail every interval. Fetchmail\n + +should be started at boot time in this case.\n + :T Här anges den grundläggande informationen för att hämta\n + +post från ett eller flera postkontor.\n + +\n + +Om uppkopplingsintervall är noll måste fetchmail schemaläggas för att\n + +köras automatiskt, startas manuellt eller startas automatiskt vid\n + +uppstart för engångshämtning.\n + +\n + +Om uppkopplingsintervall är större än noll, ska fetchmail vara igång\n + +kontinuerligt och hämtar då post varje intervall. Då bör fetchmail\n + +startas vid uppstart.\n + !T_USAGE + :E Module fetchmailconf\n\n No command line option\n + :T Modul fetchmailconf\n\n Inga kommandoalternativ\n + !M_DEFAULT + :E Basics + :T Grundinställning + !M_SERVERLIST + :E Mail servers + :T Postkontor + !M_USERIDLIST + :E Users + :T Användare + !M_FETCHMAIL_MENU + :E Fetchmail administration + :T Fetchmail administration + !I_FETCHMAIL + :E This menu allows you to configure how to fetch mail\n + +for any number of users from remote mail servers\n + +using fetchmail + :T Denna meny låter dig ställa in hur post ska hämtas för ett\n + +godtyckligt antal användare från ett eller flera postkontor\n + +genom att använda fetchmail. + !M_FETCHMAIL + :E Remote mail servers (fetchmail) + :T Hämta post (fetchmail) + !T_PRIVFETCHMAIL + :E Server administrator + :T Administratör postkontor + !T_PMISC + :E 9-Fetchmail + :T 9-Fetchmail + !F_SERVER + :E Mail server to access + :T Postkontor: + !F_POLL + :E Server is active + :T Postkontor aktivt + !F_PROTOCOLS + :E Protocol + :T Protokoll (normalt POP3 eller IMAP): + !F_POP2 + :E (Post Office Protocol 2) + :T (Post Office Protocol 2) + !F_POP3 + :E (Post Office Protocol 3) + :T (Post Office Protocol 3) + !F_APOP + :E (POP3 MD5 authentication) + :T (POP3 MD5 verifiering) + !F_RPOP + :E (POP3 RPOP authentication) + :T (POP3 RPOP verifiering) + !F_KPOP + :E (POP3 Kerberos V4 on port 1109) + :T (POP3 Kerberos V4 på port 1109) + !F_IMAP + :E (IMAP2bis, IMAP4, IMAP4rev1) + :T (IMAP2bis, IMAP4, IMAP4rev1) + !F_IMAP_K4 + :E (IMAP4rev1, RFC1731 Kerberos V4) + :T (IMAP4rev1, RFC1731 Kerberos V4) + !F_IMAP_GSS + :E (IMAP4rev1, RFC1731 GSSAPI) + :T (IMAP4rev1, RFC1731 GSSAPI) + !F_ETRN + :E ETRN (ESMTP ETRN) + :T ETRN (ESMTP ETRN) + !F_AUTO + :E AUTO (Automatic) + :T AUTO (Automatisk) + !T_OPTIONAL + :E Optional information + :T Ej obligatoriskt + !T_SECURITY + :E Security + :T Säkerhet + !F_PASSWORD + :E Password + :T Lösenord + !F_KERBEROS + :E Kerberos + :T Kerberos + !F_AUTHENTICATE + :E Authentication + :T Verifiering: + !T_MONITOR_ADDRESS + :E Monitor interface, or interface, IP address and mask + :T Kontrollera enhet, eller enhet, IP-adress och mask + !F_INTERFACE + :E Interface + :T Enhet: + !F_IP_ADDRESS + :E IP address + :T IP-adress: + !F_IP_MASK + :E IP address mask + :T IP-adressmask: + !T_MULTIDROP + :E Multidrop + :T Gemensam brevlåda + !T_MULTIDROP_TITLE + :E A single mailbox for more than one user + :T En brevlåda för mer än en användare + !T_OPTIONS + :E Options + :T Alternativ + !F_ENVELOPE + :E Envelope address header + :T Adressinledning: + !F_QVIRTUAL + :E Name prefix to strip + :T Namnprefix som tas bort: + !T_DNS + :E DNS + :T Namn-server + !F_ENABLE_DNS + :E Enable DNS + :T Aktivera DNS + !F_CHECK_ALIAS + :E Check alias + :T Kontrollera alias + !F_NO_DNS + :E No DNS + :T Ingen DNS + !F_DNS_LOOKUP + :E DNS lookup + :T DNS-namnuppslagning: + !F_DNS_ALIAS + :E DNS aliases + :T DNS-alias: + !T_LOCALDOMAINS + :E Domains + :T Domäner + !F_LOCALDOMAINS + :E Domains to be considered local + :T Domäner som antas vara lokala: + !T_SERVER + :E Remote mail server access + :T Anslutning till postkontor + !I_SERVER + :E This is where you enter the name and protocol of\n + +a remote mail server from which to retreive mail.\n + :T Här anger du postkontorets namn och vilket protokoll\n + +som ska användas för att hämta post. + !E_MONITOR_MASK + :E Invalid ip address/mask for interface + :T Ogiltig ip-adress/mask för enheten + !H_FETCHMAIL + :E Server\tStatus + :T Server\tStatus + !T_ACTIVE + :E Active + :T Aktiv + !T_INACTIVE + :E Inactive + :T Ej aktiv + !I_ADDSERVER + :E Select [Add] to add a new server + :T Välj [lägg till] för att lägga till ett nytt. + !T_SERVERLIST + :E Mail server list + :T Lista över postkontor + !I_SERVERLIST + :E This is the list of all configured mail servers. + :T Detta är listan över alla inlagda postkontor. + !I_SERVERLISTSELECT + :E This is a list of all configured mail servers.\nPlease select a server. + :T Detta är listan över alla inlagda postkontor.\nVälj en en i listan\n + !T_PRIVUSERID + :E Users administrator + :T Användaradminstratör + !F_REMOTEUSER + :E Remote user name + :T Användarnamn i postkontor: + !F_USERPASSWORD + :E Remote user password + :T Lösenord: + !F_LOCALUSER + :E Local user name(s) + :T Lokala användarnamn: + !T_FETCH + :E Fetch + :T Hämta + !T_FETCHHOW + :E How + :T Hur + !F_FETCHALL + :E Fetch all messages whether seen or not + :T Hämta all post antingen den har hämtats tidigare eller ej + !F_KEEP + :E Don't delete seen messages from server + :T Ta inte bort hämtad post från postkontor + !F_FLUSH + :E Flush all seen messages before querying + :T Rensa bort tidigare hämtad post innan ny förfrågan + !T_FETCHWHERE + :E Where + :T Var + !F_FOLDER + :E Remote mailbox name(s) + :T Brevlådans namn: + !T_FETCHLIMITS + :E Limits + :T Gränser + !F_LIMIT + :E Max message size limit + :T Max meddelandestorlek: + !F_WARNINGS + :E Size warning interval (seconds) + :T Intervall för storleksvarning (sekunder): + !F_FETCHLIMIT + :E Max messages to fetch per session + :T Max antal meddelanden som hämtas per uppkoppling: + !T_MODIFY + :E Modify + :T Ändra + !F_STRIPCR + :E Strip carriage returns from ends of lines + :T Ta bort CR från radslut + !F_FORCECR + :E Force carriage returns at end of lines + :T Lägg in CR vid radslut + !F_PASS8BITS + :E Force BODY=8BITMIME to ESMTP listener + :T Framtvinga BODY=8BITMIME mot ESMTP-lyssnare + !F_MIMEDECODE + :E Convert quoted-printable to 8-bit in MIME messages + :T Konvertera till 8-bit i MIME-meddelanden + !F_REWRITE + :E Rewrite destination addresses for reply + :T Återskriv destinationsadress för svar + !F_DROPSTATUS + :E Strip Status and X-Mozilla-Status out of incoming mail + :T Ta bort Status och X-Mozilla-Status + !T_DELIVERY + :E Delivery + :T Leverans + !T_DELIVERY_GENERAL + :E General + :T Generellt + !F_BATCHLIMIT + :E Max messages to forward per session + :T Max antal brev per uppkoppling: + !T_DELIVERY_REMOTE + :E Remote + :T Server + !T_DELIVERYTITLE + :E Final destination if not local SMTP listener + :T Slutlig destination om ej lokal SMTP-lyssnare + !F_SMTPHOST + :E Forward to other host(s) + :T Vidarebefordra till andra system: + !F_SMTPADDRESS + :E Different domain (RCPT TO) + :T Annan domän (RCPT TO): + !F_MDA + :E Local mail delivery agent (MDA) + :T Lokalt program för postbefordran (MDA): + !T_USERID + :E Remote user mail retreival + :T Hämtning av post + !I_USERID + :E This is where you enter the name and password of\n + +a user to fetch mail from a remote mail server.\n + :T Här lägger du in namn och lösenord för användare\n + +som ska få post hämtad från ett postkontor.\n + !H_USERID + :E Remote user\tLocal user + :T Användare i postkontor\tLokal användare + !I_ADDUSERID + :E Select [Add] to add a new user + :T Välj [lägg till] för att lägga in en ny användare + !T_USERIDLIST + :E Mail user list + :T Användarlista + !I_USERIDLIST + :E This is the list of all configured mail users\non this mail server.\n + :T Detta är listan över alla inlagda postanvändare\nför detta postkontor.\n diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/messages/sources/mailconf.dic linuxconf-1.16r9/messages/sources/mailconf.dic *** linuxconf-1.16r8/messages/sources/mailconf.dic Mon Nov 8 01:33:27 1999 --- linuxconf-1.16r9/messages/sources/mailconf.dic Wed Nov 24 23:56:59 1999 *************** *** 606,607 **** --- 606,609 ---- !F_VFILTER :E Filter program + args (opt) + !P_SEEDOMAIN + :E See virtual domains diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/messages/sources/managerpm.dic linuxconf-1.16r9/messages/sources/managerpm.dic *** linuxconf-1.16r8/messages/sources/managerpm.dic Sun Nov 7 12:07:31 1999 --- linuxconf-1.16r9/messages/sources/managerpm.dic Thu Nov 25 23:23:19 1999 *************** *** 221,222 **** --- 221,239 ---- !E_MISSINGPKGS :E Some packages are missing. Here is the list\n\n%s + !H_CONFLICT + :E Resources/Files\tPackages\tDescriptions + !T_CONFLICT + :E Conflict packages + !I_CONFLICT + :E Some already installed packages provide\n + +either the same files or functionalities.\n + +Installing is not recommended unless you really know\n + +what you are doing\n + +\n + +You may inspect the offending packages and even remove\n + +them to solve the problem as well. + !B_REPLACEFILE + :E Install anyway + !N_NOMORECONFLICTS + :E You have removed all the conflicting packages.\n + +We can proceed to the installation now. diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/messages/sources/netconf.dic linuxconf-1.16r9/messages/sources/netconf.dic *** linuxconf-1.16r8/messages/sources/netconf.dic Fri Sep 24 00:03:04 1999 --- linuxconf-1.16r9/messages/sources/netconf.dic Tue Nov 23 17:09:21 1999 *************** *** 748,752 **** :E Config !T_HOSTHEAD ! :E IP number\tname & aliases !T_NETMISC :E Misc --- 748,752 ---- :E Config !T_HOSTHEAD ! :E IP number\tname\taliases !T_NETMISC :E Misc diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/messages/sources/pppdialin.dic linuxconf-1.16r9/messages/sources/pppdialin.dic *** linuxconf-1.16r8/messages/sources/pppdialin.dic Thu Nov 18 23:23:07 1999 --- linuxconf-1.16r9/messages/sources/pppdialin.dic Thu Nov 25 15:06:16 1999 *************** *** 91,92 **** --- 91,96 ---- !I_PPPDEV :E One PPP account + !F_FIREWALL + :E Update + !I_FIREWALL + :E the firewall rules diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/messages/sources/userconf.dic linuxconf-1.16r9/messages/sources/userconf.dic *** linuxconf-1.16r8/messages/sources/userconf.dic Wed Sep 29 14:22:30 1999 --- linuxconf-1.16r9/messages/sources/userconf.dic Wed Nov 24 23:46:01 1999 *************** *** 554,555 **** --- 554,557 ---- !E_FAILCREATE :E Can't create user account + !P_USERACCOUTS + :E To view and edit user accounts diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/misc/arraykey.cc linuxconf-1.16r9/misc/arraykey.cc *** linuxconf-1.16r8/misc/arraykey.cc Thu Nov 11 12:18:04 1999 --- linuxconf-1.16r9/misc/arraykey.cc Thu Nov 25 16:41:30 1999 *************** *** 30,35 **** ARRAY_OBJ *_obj, bool is_owner) { - key.setfrom (_key); obj = _obj; owner = is_owner; --- 30,35 ---- ARRAY_OBJ *_obj, bool is_owner) + : SSTRING(_key) { obj = _obj; owner = is_owner; *************** *** 65,69 **** for (int i=0; i<n; i++){ ARRAY_KEY *ar = getitem(i); ! if (ar->key.cmp(key)==0){ ret = ar; break; --- 65,69 ---- for (int i=0; i<n; i++){ ARRAY_KEY *ar = getitem(i); ! if (ar->cmp(key)==0){ ret = ar; break; *************** *** 83,86 **** --- 83,102 ---- return ret; } + + static int cmp (const ARRAY_OBJ *o1, const ARRAY_OBJ *o2) + { + SSTRING *s1 = (SSTRING *)o1; + SSTRING *s2 = (SSTRING *)o2; + return s1->cmp(*s2); + } + + /* + Sort the array of SSTRING + */ + PUBLIC void ARRAY_KEYS::sort () + { + ARRAY::sort (cmp); + } + PUBLIC SSTRING_KEY::SSTRING_KEY (const char *_key, const char *_val) diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/misc/misc.h linuxconf-1.16r9/misc/misc.h *** linuxconf-1.16r8/misc/misc.h Mon Nov 15 01:15:28 1999 --- linuxconf-1.16r9/misc/misc.h Thu Nov 25 16:41:41 1999 *************** *** 68,75 **** #endif ! class ARRAY_KEY: public ARRAY_OBJ{ bool owner; // May delete the object public: - SSTRING key; ARRAY_OBJ *obj; /*~PROTOBEG~ ARRAY_KEY */ --- 68,74 ---- #endif ! class ARRAY_KEY: public SSTRING{ bool owner; // May delete the object public: ARRAY_OBJ *obj; /*~PROTOBEG~ ARRAY_KEY */ *************** *** 92,95 **** --- 91,95 ---- ARRAY_KEY *getobj (const char *key)const; ARRAY_OBJ *getval (const char *key)const; + void sort (void); /*~PROTOEND~ ARRAY_KEYS */ }; diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/misc/misc.p linuxconf-1.16r9/misc/misc.p *** linuxconf-1.16r8/misc/misc.p Mon Nov 15 01:19:19 1999 --- linuxconf-1.16r9/misc/misc.p Thu Nov 25 16:41:41 1999 *************** *** 1,5 **** /* _dict.cc 14/08/1996 14.39.06 */ /* array.cc 13/09/1998 01.13.12 */ ! /* arraykey.cc 11/11/1999 12.18.04 */ void arraykey_required (void); /* confdb.cc 20/09/1999 21.04.42 */ --- 1,5 ---- /* _dict.cc 14/08/1996 14.39.06 */ /* array.cc 13/09/1998 01.13.12 */ ! /* arraykey.cc 25/11/1999 16.41.30 */ void arraykey_required (void); /* confdb.cc 20/09/1999 21.04.42 */ *************** *** 217,221 **** void module_setone (const char *path); void module_unsetone (const char *path); ! /* module_api.cc 15/11/1999 01.19.06 */ void module_api_required (void); void module_register_api (const char *apiname, --- 217,221 ---- void module_setone (const char *path); void module_unsetone (const char *path); ! /* module_api.cc 18/11/1999 11.52.40 */ void module_api_required (void); void module_register_api (const char *apiname, *************** *** 226,230 **** int version, const char *client, ! void *tb[MAX_API_PROVIDERS]); void module_release_apis (const char *apiname, void *tbapi[], --- 226,230 ---- int version, const char *client, ! void *tbapi[MAX_API_PROVIDERS]); void module_release_apis (const char *apiname, void *tbapi[], *************** *** 237,241 **** int version, const char *client); ! /* popen.cc 06/11/1999 23.01.36 */ void popen_initsignal (void); int popen_getloginuid (void); --- 237,241 ---- int version, const char *client); ! /* popen.cc 25/11/1999 00.56.30 */ void popen_initsignal (void); int popen_getloginuid (void); diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/misc/misc.pm linuxconf-1.16r9/misc/misc.pm *** linuxconf-1.16r8/misc/misc.pm Mon Nov 15 01:19:19 1999 --- linuxconf-1.16r9/misc/misc.pm Thu Nov 25 16:41:41 1999 *************** *** 31,35 **** PUBLIC int ARRAY::editone (int no); PUBLIC int ARRAY::editone (ARRAY_OBJ *e); ! /* arraykey.cc 11/11/1999 12.18.04 */ PUBLIC ARRAY_KEY::ARRAY_KEY (const char *_key, ARRAY_OBJ *_obj, --- 31,35 ---- PUBLIC int ARRAY::editone (int no); PUBLIC int ARRAY::editone (ARRAY_OBJ *e); ! /* arraykey.cc 25/11/1999 16.41.30 */ PUBLIC ARRAY_KEY::ARRAY_KEY (const char *_key, ARRAY_OBJ *_obj, *************** *** 43,46 **** --- 43,47 ---- PUBLIC ARRAY_KEY *ARRAY_KEYS::getobj (const char *key)const; PUBLIC ARRAY_OBJ *ARRAY_KEYS::getval (const char *key)const; + PUBLIC void ARRAY_KEYS::sort (void); PUBLIC SSTRING_KEY::SSTRING_KEY (const char *_key, const char *_val); PUBLIC void SSTRING_KEYS::add (const char *key, const char *val); *************** *** 341,345 **** PUBLIC void MODULE_INFOS::setone (const char *path); PUBLIC void MODULE_INFOS::unsetone (const char *path); ! /* module_api.cc 15/11/1999 01.19.06 */ PUBLIC MODULE_API::MODULE_API (void * (*_fctget)(), void (*_fctrelease)(void *)); --- 342,346 ---- PUBLIC void MODULE_INFOS::setone (const char *path); PUBLIC void MODULE_INFOS::unsetone (const char *path); ! /* module_api.cc 18/11/1999 11.52.40 */ PUBLIC MODULE_API::MODULE_API (void * (*_fctget)(), void (*_fctrelease)(void *)); *************** *** 351,355 **** void (*_fctrelease)(void *)); PUBLIC MODULE_APIREF *MODULE_APIREFS::getitem (int no)const; ! /* popen.cc 06/11/1999 23.01.36 */ PROTECTED void POPENFD::setfds (int fdin, int fdout, --- 352,356 ---- void (*_fctrelease)(void *)); PUBLIC MODULE_APIREF *MODULE_APIREFS::getitem (int no)const; ! /* popen.cc 25/11/1999 00.56.30 */ PROTECTED void POPENFD::setfds (int fdin, int fdout, diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/misc/popen.cc linuxconf-1.16r9/misc/popen.cc *** linuxconf-1.16r8/misc/popen.cc Thu Nov 18 18:09:23 1999 --- linuxconf-1.16r9/misc/popen.cc Thu Nov 25 00:56:31 1999 *************** *** 372,375 **** --- 372,376 ---- if (sockholder != NULL){ ret = socketpair(AF_UNIX,SOCK_STREAM,PF_UNIX,fdinout); + fdin[0] = fdin[1] = fdout[0] = fdout[1] = -1; }else{ fdinout[0] = fdinout[1] = -1; diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/modules/conectiva/reduser.cc linuxconf-1.16r9/modules/conectiva/reduser.cc *** linuxconf-1.16r8/modules/conectiva/reduser.cc Sun Nov 15 01:31:34 1998 --- linuxconf-1.16r9/modules/conectiva/reduser.cc Thu Nov 25 01:09:46 1999 *************** *** 89,92 **** --- 89,93 ---- ret = netconf_system_if ("chage",tmp); } + netconf_closepipes(); return ret; } diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/modules/debian/user.cc linuxconf-1.16r9/modules/debian/user.cc *** linuxconf-1.16r8/modules/debian/user.cc Wed Jul 14 21:33:45 1999 --- linuxconf-1.16r9/modules/debian/user.cc Thu Nov 25 01:10:21 1999 *************** *** 84,87 **** --- 84,88 ---- ret = netconf_system_if ("chage",tmp); } + netconf_closepipes(); return ret; } diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/modules/dialout/pppcon.cc linuxconf-1.16r9/modules/dialout/pppcon.cc *** linuxconf-1.16r8/modules/dialout/pppcon.cc Fri Nov 19 01:36:57 1999 --- linuxconf-1.16r9/modules/dialout/pppcon.cc Thu Nov 25 14:57:12 1999 *************** *** 960,965 **** { if (!postdiscmd.is_empty()) pppcon_execbg (postdiscmd); - if (firewall) module_sendmessage ("setfw",0,NULL); delpidfile(); return 0; } --- 960,965 ---- { if (!postdiscmd.is_empty()) pppcon_execbg (postdiscmd); delpidfile(); + if (firewall) module_sendmessage ("setfw",0,NULL); return 0; } diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/modules/fetchmailconf/Makefile linuxconf-1.16r9/modules/fetchmailconf/Makefile *** linuxconf-1.16r8/modules/fetchmailconf/Makefile Tue Nov 23 09:39:32 1999 --- linuxconf-1.16r9/modules/fetchmailconf/Makefile Thu Nov 25 14:27:05 1999 *************** *** 1,5 **** CURDIR=fetchmailconf LOCAL_CLEAN=std_local_clean ! LOCAL_INSTALL=std_local_install all: $(CURDIR).so OBJS = fetchmailconf.os basicsedit.os serveredit.os useridedit.os keyword.os _dict.os --- 1,5 ---- CURDIR=fetchmailconf LOCAL_CLEAN=std_local_clean ! LOCAL_INSTALL=local_install all: $(CURDIR).so OBJS = fetchmailconf.os basicsedit.os serveredit.os useridedit.os keyword.os _dict.os *************** *** 9,11 **** include ../stdmod.mak ! --- 9,11 ---- include ../stdmod.mak ! local_install: std_local_install install_daemons diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/modules/firewall/ipfwrule.cc linuxconf-1.16r9/modules/firewall/ipfwrule.cc *** linuxconf-1.16r8/modules/firewall/ipfwrule.cc Thu Nov 18 23:48:49 1999 --- linuxconf-1.16r9/modules/firewall/ipfwrule.cc Wed Nov 24 10:35:52 1999 *************** *** 423,427 **** } }else{ - char interbuf[100]; if (f.interface.is_empty() || f.interface.icmp("Any")==0){ --- 423,426 ---- *************** *** 435,439 **** if (ipfwrule_convert (inter,ip,msk,NULL,tbapi,nbapi)!=-1){ if(!kernel_newer(2,2,0) ! || netconf_finddevfromhost(ip,interbuf)==-1){ strcpy (solved.interface,ip); } --- 434,438 ---- if (ipfwrule_convert (inter,ip,msk,NULL,tbapi,nbapi)!=-1){ if(!kernel_newer(2,2,0) ! || netconf_finddevfromhost(ip,solved.interface)==-1){ strcpy (solved.interface,ip); } diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/modules/mailconf/alias.cc linuxconf-1.16r9/modules/mailconf/alias.cc *** linuxconf-1.16r8/modules/mailconf/alias.cc Thu May 27 17:15:52 1999 --- linuxconf-1.16r9/modules/mailconf/alias.cc Thu Nov 25 00:29:11 1999 *************** *** 318,321 **** --- 318,322 ---- } } + fclose (fin); addline(buf); rstmodified(); diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/modules/mailconf/mailconf.m linuxconf-1.16r9/modules/mailconf/mailconf.m *** linuxconf-1.16r8/modules/mailconf/mailconf.m Mon Nov 8 01:33:27 1999 --- linuxconf-1.16r9/modules/mailconf/mailconf.m Wed Nov 24 23:56:59 1999 *************** *** 3,7 **** #define DICTIONARY_REQUEST \ const char **_dictionary_mailconf;\ ! TRANSLATE_SYSTEM_REQ _dictionary_req_mailconf("mailconf",_dictionary_mailconf,273,19);\ void dummy_dict_mailconf(){} #endif --- 3,7 ---- #define DICTIONARY_REQUEST \ const char **_dictionary_mailconf;\ ! TRANSLATE_SYSTEM_REQ _dictionary_req_mailconf("mailconf",_dictionary_mailconf,274,19);\ void dummy_dict_mailconf(){} #endif *************** *** 287,288 **** --- 287,289 ---- #define E_NOUSERINDOMAIN 271 #define F_VFILTER 272 + #define P_SEEDOMAIN 273 diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/modules/mailconf/vdomain.cc linuxconf-1.16r9/modules/mailconf/vdomain.cc *** linuxconf-1.16r8/modules/mailconf/vdomain.cc Sat Nov 20 19:46:10 1999 --- linuxconf-1.16r9/modules/mailconf/vdomain.cc Thu Nov 25 00:21:10 1999 *************** *** 295,319 **** } - /* - Edit the definition of virtual email domains. - Return != 0 if the has been one modification. - */ - PUBLIC MENU_STATUS VDOMAINS::select( - const char *title, - const char *intro, - int mayadd, - int &nof) - { - sort(); - DIALOG_LISTE dia; - dia.newf_head ("",MSG_U(H_VDOMAINS,"Virtual email domains")); - for (int i=0; i<getnb(); i++){ - VDOMAIN *d = getitem(i); - dia.new_menuitem(d->domain.get(),""); - } - if (mayadd) dia.addwhat (MSG_U(I_ONEVDOMAIN,"Select [Add] to add one virtual domain")); - MENU_STATUS code = dia.editmenu (title,intro,help_vdomain,nof,0); - return code; - } PUBLIC void VDOMAIN::createfiles() { --- 295,298 ---- *************** *** 343,367 **** { int ret = 0; ! int nof = 0; ! while (1){ ! MENU_STATUS code = select ( ! MSG_U(T_VDOMAINS,"Virtual email domains") ! ,MSG_U(I_VDOMAINS ! ,"You can define new virtual email domain\n" ! "virtual email hosting is a new concept.\n" ! "It is not required for most mail server configuration.\n") ! ,1 ! ,nof); ! if (code == MENU_QUIT || code == MENU_ESCAPE){ ! break; ! }else if (code == MENU_ADD){ ! VDOMAIN *d = new VDOMAIN; ! if (manage_edit (d,d->edit(*this)) >= 0){ ! d->createfiles(); ! ret = 1; } - }else if (nof >= 0 && nof < getnb()){ - VDOMAIN *d = getitem(nof); - if (manage_edit (d,d->edit(*this)) >= 0) ret = 1; } } --- 322,348 ---- { int ret = 0; ! if (perm_rootaccess(MSG_R(P_SEEDOMAIN))){ ! int nof = 0; ! while (1){ ! MENU_STATUS code = select ( ! MSG_U(T_VDOMAINS,"Virtual email domains") ! ,MSG_U(I_VDOMAINS ! ,"You can define new virtual email domain\n" ! "virtual email hosting is a new concept.\n" ! "It is not required for most mail server configuration.\n") ! ,1 ! ,nof); ! if (code == MENU_QUIT || code == MENU_ESCAPE){ ! break; ! }else if (code == MENU_ADD){ ! VDOMAIN *d = new VDOMAIN; ! if (manage_edit (d,d->edit(*this)) >= 0){ ! d->createfiles(); ! ret = 1; ! } ! }else if (nof >= 0 && nof < getnb()){ ! VDOMAIN *d = getitem(nof); ! if (manage_edit (d,d->edit(*this)) >= 0) ret = 1; } } } *************** *** 485,488 **** --- 466,480 ---- } + /* + Return the co-admin privilege associated with a vdomain + */ + static PRIVILEGE *vdomain_lookuppriv (const char *dname) + { + vdomain_setprivi(); + char id[PATH_MAX]; + sprintf (id,"vdomain_%s",dname); + return privilege_lookup (id); + } + static void vdomain_editone (VDOMAIN *v, USER *like) { *************** *** 490,497 **** USERS *users = v->getusers (file,file_shadow); const char *dname = v->domain.get(); ! vdomain_setprivi(); ! char id[PATH_MAX]; ! sprintf (id,"vdomain_%s",dname); ! PRIVILEGE *priv = privilege_lookup (id); if (perm_access (priv,MSG_U(P_MANAGEDOM,"manage a virtual domain"))){ users->edit(like,priv,0); --- 482,486 ---- USERS *users = v->getusers (file,file_shadow); const char *dname = v->domain.get(); ! PRIVILEGE *priv = vdomain_lookuppriv (dname); if (perm_access (priv,MSG_U(P_MANAGEDOM,"manage a virtual domain"))){ users->edit(like,priv,0); *************** *** 501,504 **** --- 490,534 ---- delete file_shadow; } + + /* + Edit the definition of virtual email domains. + Return != 0 if the has been one modification. + */ + PUBLIC MENU_STATUS VDOMAINS::select( + const char *title, + const char *intro, + int mayadd, + int &nof) + { + sort(); + DIALOG_LISTE dia; + dia.newf_head ("",MSG_U(H_VDOMAINS,"Virtual email domains")); + int lookup[getnb()]; + for (int i=0; i<getnb(); i++){ + VDOMAIN *d = getitem(i); + PRIVILEGE *priv = vdomain_lookuppriv (d->domain.get()); + if (perm_checkpriv(priv)){ + lookup[dia.getnb()-1] = i; + dia.new_menuitem(d->domain.get(),""); + } + } + if (dia.getnb()==1){ + // No domain visible by the user + // check with root privileges + if (perm_rootaccess(MSG_U(P_SEEDOMAIN,"See virtual domains"))){ + for (int i=0; i<getnb(); i++){ + VDOMAIN *d = getitem(i); + lookup[dia.getnb()-1] = i; + dia.new_menuitem(d->domain.get(),""); + } + } + } + if (mayadd) dia.addwhat (MSG_U(I_ONEVDOMAIN,"Select [Add] to add one virtual domain")); + MENU_STATUS code = dia.editmenu (title,intro,help_vdomain,nof,0); + if (code == MENU_OK) nof = lookup[nof]; + return code; + } + + /* diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/modules/managerpm/Makefile linuxconf-1.16r9/modules/managerpm/Makefile *** linuxconf-1.16r8/modules/managerpm/Makefile Tue Nov 23 10:36:04 1999 --- linuxconf-1.16r9/modules/managerpm/Makefile Thu Nov 25 16:20:02 1999 *************** *** 7,11 **** include ../rules.mak ! PROTOUPDHEAD=-bmngrpm.cc+managerpm.pm include ../stdmod.mak --- 7,11 ---- include ../rules.mak ! PROTOUPDHEAD=-bmngrpm.cc+managerpm.pm -bpackage.cc+managerpm.pm include ../stdmod.mak diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/modules/managerpm/api.cc linuxconf-1.16r9/modules/managerpm/api.cc *** linuxconf-1.16r8/modules/managerpm/api.cc Sun Nov 7 15:21:13 1999 --- linuxconf-1.16r9/modules/managerpm/api.cc Thu Nov 25 22:57:38 1999 *************** *** 83,86 **** --- 83,95 ---- /* + Return true if a package is installed + */ + bool package_is_installed(const char *package) + { + PACKAGES pkgs; + return api_findpkg (pkgs,"-q %s",package) != NULL; + } + + /* Return 1 if a given package is newer (or equal) than a specific version Return -1 if the package is not installed diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/modules/managerpm/managerpm.h linuxconf-1.16r9/modules/managerpm/managerpm.h *** linuxconf-1.16r8/modules/managerpm/managerpm.h Sun Nov 7 00:48:57 1999 --- linuxconf-1.16r9/modules/managerpm/managerpm.h Thu Nov 25 23:10:06 1999 *************** *** 70,73 **** --- 70,75 ---- const char *ver); void forgetpkg (PACKAGE *pkg); + bool testconflicts (const char *name, + PACKAGES&conflicts); bool testinstall (PACKAGES&needs); bool testuninstall (PACKAGES&needs); *************** *** 84,88 **** }; ! class PACKAGE: public ARRAY_OBJ{ --- 86,90 ---- }; ! class CONFLICTS; class PACKAGE: public ARRAY_OBJ{ *************** *** 124,128 **** void showfiles (void); void showinfo (void); ! bool testinstall (PACKAGES&needs, SSTRINGS&missing); bool testuninstall (PACKAGES&needs); int uninstall (void); --- 126,132 ---- void showfiles (void); void showinfo (void); ! bool testinstall (PACKAGES&needs, ! SSTRINGS&missing, ! CONFLICTS&conflicts); bool testuninstall (PACKAGES&needs); int uninstall (void); *************** *** 147,151 **** void selectall (void); void sort (void); ! bool testinstall (bool&nodeps); bool testuninstall (bool&nodeps); int uninstall (void); --- 151,155 ---- void selectall (void); void sort (void); ! bool testinstall (bool&nodeps, bool&replacefiles); bool testuninstall (bool&nodeps); int uninstall (void); diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/modules/managerpm/managerpm.m linuxconf-1.16r9/modules/managerpm/managerpm.m *** linuxconf-1.16r8/modules/managerpm/managerpm.m Sun Nov 7 12:07:31 1999 --- linuxconf-1.16r9/modules/managerpm/managerpm.m Thu Nov 25 23:23:19 1999 *************** *** 3,7 **** #define DICTIONARY_REQUEST \ const char **_dictionary_managerpm;\ ! TRANSLATE_SYSTEM_REQ _dictionary_req_managerpm("managerpm",_dictionary_managerpm,100,2);\ void dummy_dict_managerpm(){} #endif --- 3,7 ---- #define DICTIONARY_REQUEST \ const char **_dictionary_managerpm;\ ! TRANSLATE_SYSTEM_REQ _dictionary_req_managerpm("managerpm",_dictionary_managerpm,105,2);\ void dummy_dict_managerpm(){} #endif *************** *** 114,115 **** --- 114,120 ---- #define N_DONE 98 #define E_MISSINGPKGS 99 + #define H_CONFLICT 100 + #define T_CONFLICT 101 + #define I_CONFLICT 102 + #define B_REPLACEFILE 103 + #define N_NOMORECONFLICTS 104 diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/modules/managerpm/managerpm.p linuxconf-1.16r9/modules/managerpm/managerpm.p *** linuxconf-1.16r8/modules/managerpm/managerpm.p Tue Nov 23 09:46:22 1999 --- linuxconf-1.16r9/modules/managerpm/managerpm.p Thu Nov 25 23:10:06 1999 *************** *** 1,5 **** /* managerpm.cc 27/10/1999 23.06.30 */ /* _dict.cc 16/09/1998 16.07.22 */ ! /* mngrpm.cc 07/11/1999 11.57.58 */ int mngrpm_execrpm (const SSTRING&args, SSTRINGS&tb); void mngrpm_setfsroot (const char *root); --- 1,5 ---- /* managerpm.cc 27/10/1999 23.06.30 */ /* _dict.cc 16/09/1998 16.07.22 */ ! /* mngrpm.cc 25/11/1999 20.41.52 */ int mngrpm_execrpm (const SSTRING&args, SSTRINGS&tb); void mngrpm_setfsroot (const char *root); *************** *** 16,20 **** void mngrpm_showaddon (void); void mngrpm_menu (void); ! /* api.cc 07/11/1999 15.21.12 */ void *managerpm_api_get (void); void managerpm_api_release (void *obj); --- 16,21 ---- void mngrpm_showaddon (void); void mngrpm_menu (void); ! /* api.cc 25/11/1999 22.57.38 */ ! bool package_is_installed (const char *package); void *managerpm_api_get (void); void managerpm_api_release (void *obj); *************** *** 23,30 **** void browse_installed (void); void browse_uninstalled (void); ! /* package.cc 07/11/1999 11.41.40 */ void mngrpm_parsever (const char *version, VERSION_ITEMS&v); int package_cmpver (const VERSION_ITEMS&v1, const VERSION_ITEMS&v2); ! /* poolstr.cc 28/10/1999 12.17.36 */ STRENTRY *poolstr_locate_add (const char *s); STRENTRY *poolstr_addprovide (PACKAGE *p, const char *s); --- 24,31 ---- void browse_installed (void); void browse_uninstalled (void); ! /* package.cc 25/11/1999 23.08.50 */ void mngrpm_parsever (const char *version, VERSION_ITEMS&v); int package_cmpver (const VERSION_ITEMS&v1, const VERSION_ITEMS&v2); ! /* poolstr.cc 25/11/1999 23.10.00 */ STRENTRY *poolstr_locate_add (const char *s); STRENTRY *poolstr_addprovide (PACKAGE *p, const char *s); diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/modules/managerpm/managerpm.pm linuxconf-1.16r9/modules/managerpm/managerpm.pm *** linuxconf-1.16r8/modules/managerpm/managerpm.pm Tue Nov 23 09:46:22 1999 --- linuxconf-1.16r9/modules/managerpm/managerpm.pm Thu Nov 25 23:10:06 1999 *************** *** 9,13 **** PUBLIC int MODULE_managerpm::execmain (int argc, char *argv[]); /* _dict.cc 16/09/1998 16.07.22 */ ! /* mngrpm.cc 07/11/1999 11.57.58 */ PUBLIC RPM_OPTIONS::RPM_OPTIONS (void); PUBLIC void RPM_OPTIONS::addargs (SSTRING&args)const; --- 9,13 ---- PUBLIC int MODULE_managerpm::execmain (int argc, char *argv[]); /* _dict.cc 16/09/1998 16.07.22 */ ! /* mngrpm.cc 25/11/1999 20.41.52 */ PUBLIC RPM_OPTIONS::RPM_OPTIONS (void); PUBLIC void RPM_OPTIONS::addargs (SSTRING&args)const; *************** *** 26,32 **** PUBLIC PACKAGE *PACKAGES::locate (const char *name); PUBLIC void PACKAGES::sort (void); ! /* api.cc 07/11/1999 15.21.12 */ /* browse.cc 27/10/1999 15.56.24 */ ! /* package.cc 07/11/1999 11.41.40 */ PUBLIC PACKAGE::PACKAGE (const char *_name, const char *_version, --- 26,32 ---- PUBLIC PACKAGE *PACKAGES::locate (const char *name); PUBLIC void PACKAGES::sort (void); ! /* api.cc 25/11/1999 22.57.38 */ /* browse.cc 27/10/1999 15.56.24 */ ! /* package.cc 25/11/1999 23.08.50 */ PUBLIC PACKAGE::PACKAGE (const char *_name, const char *_version, *************** *** 48,56 **** PUBLIC bool PACKAGE::is_installed (void)const; PUBLIC void PACKAGES::resetneeded (void); ! PUBLIC bool PACKAGE::testinstall (PACKAGES&needs, SSTRINGS&missing); PUBLIC bool PACKAGE::testuninstall (PACKAGES&needs); PUBLIC bool PACKAGES::testuninstall (bool&nodeps); ! PUBLIC bool PACKAGES::testinstall (bool&nodeps); ! /* poolstr.cc 28/10/1999 12.17.36 */ PUBLIC STRENTRY::STRENTRY (const char *s); PUBLIC STRENTRY::~STRENTRY (void); --- 48,61 ---- PUBLIC bool PACKAGE::is_installed (void)const; PUBLIC void PACKAGES::resetneeded (void); ! PUBLIC CONFLICT::CONFLICT (const char *key, PACKAGES *p); ! PUBLIC PACKAGES *CONFLICT::getobj (void); ! PUBLIC CONFLICT *CONFLICTS::getitem (int no)const; ! PUBLIC bool PACKAGE::testinstall (PACKAGES&needs, ! SSTRINGS&missing, ! CONFLICTS&conflicts); PUBLIC bool PACKAGE::testuninstall (PACKAGES&needs); PUBLIC bool PACKAGES::testuninstall (bool&nodeps); ! PUBLIC bool PACKAGES::testinstall (bool&nodeps, bool&replacefiles); ! /* poolstr.cc 25/11/1999 23.10.00 */ PUBLIC STRENTRY::STRENTRY (const char *s); PUBLIC STRENTRY::~STRENTRY (void); *************** *** 64,65 **** --- 69,72 ---- PUBLIC bool STRENTRY::testinstall (PACKAGES&needs); PUBLIC bool STRENTRY::testuninstall (PACKAGES&needs); + PUBLIC bool STRENTRY::testconflicts (const char *name, + PACKAGES&conflicts); diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/modules/managerpm/mngrpm.cc linuxconf-1.16r9/modules/managerpm/mngrpm.cc *** linuxconf-1.16r8/modules/managerpm/mngrpm.cc Sun Nov 7 11:57:59 1999 --- linuxconf-1.16r9/modules/managerpm/mngrpm.cc Thu Nov 25 20:41:52 1999 *************** *** 307,313 **** " \"##%%{name}\t%%{version}\t%%{release}\t%%{group}\t%%{vendor}\t%%{distribution}\t%%{summary}\n\"" " --requires" ! " --queryformat \"#-\n\"" " --provides" ! " --queryformat \"#=\n\"" " --list" " --queryformat \"\n\"" --- 307,313 ---- " \"##%%{name}\t%%{version}\t%%{release}\t%%{group}\t%%{vendor}\t%%{distribution}\t%%{summary}\n\"" " --requires" ! " --queryformat \"\n#-\n\"" " --provides" ! " --queryformat \"\n#=\n\"" " --list" " --queryformat \"\n\"" *************** *** 680,686 **** { int ret = -1; ! bool nodeps; ! if (newpkgs.testinstall(nodeps)){ if (nodeps) options.nodep = 1; ret = mngrpm_domany (newpkgs,MSG_U(T_UPDPKG,"Update packages") ,"-Uv",options); --- 680,687 ---- { int ret = -1; ! bool nodeps,replacefiles; ! if (newpkgs.testinstall(nodeps,replacefiles)){ if (nodeps) options.nodep = 1; + if (replacefiles) options.replace = 1; ret = mngrpm_domany (newpkgs,MSG_U(T_UPDPKG,"Update packages") ,"-Uv",options); diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/modules/managerpm/package.cc linuxconf-1.16r9/modules/managerpm/package.cc *** linuxconf-1.16r8/modules/managerpm/package.cc Sun Nov 7 11:41:40 1999 --- linuxconf-1.16r9/modules/managerpm/package.cc Thu Nov 25 23:23:14 1999 *************** *** 7,10 **** --- 7,11 ---- static HELP_FILE help_missingpkgs ("managerpm","missingpkgs"); static HELP_FILE help_requiredpkgs ("managerpm","requiredpkgs"); + static HELP_FILE help_conflicts ("managerpm","conflicts"); /* *************** *** 282,285 **** --- 283,315 ---- } + class CONFLICT: public ARRAY_KEY{ + /*~PROTOBEG~ CONFLICT */ + public: + CONFLICT (const char *key, PACKAGES *p); + PACKAGES *getobj (void); + /*~PROTOEND~ CONFLICT */ + }; + + PUBLIC CONFLICT::CONFLICT (const char *key, PACKAGES *p) + : ARRAY_KEY (key,p,false) + { + } + PUBLIC PACKAGES *CONFLICT::getobj () + { + return (PACKAGES*)obj; + } + + + class CONFLICTS: public ARRAY_KEYS{ + /*~PROTOBEG~ CONFLICTS */ + public: + CONFLICT *getitem (int no)const; + /*~PROTOEND~ CONFLICTS */ + }; + + PUBLIC CONFLICT *CONFLICTS::getitem (int no) const + { + return (CONFLICT*)ARRAY_KEYS::getitem(no); + } /* Check if a package may be installed. *************** *** 290,294 **** can't be solved. */ ! PUBLIC bool PACKAGE::testinstall(PACKAGES &needs, SSTRINGS &missing) { int ret = true; --- 320,330 ---- can't be solved. */ ! PUBLIC bool PACKAGE::testinstall( ! PACKAGES &needs, // Other package we must install to ! // satisfy the depandancies ! SSTRINGS &missing, // Stuff not provided by any packages ! CONFLICTS &conflicts) // Already installed package providing the ! // same capabilities than this one we want to ! // install { int ret = true; *************** *** 302,305 **** --- 338,355 ---- } } + n = provides.getnb(); + PACKAGES *pkgs = new PACKAGES; + for (int i=0; i<n; i++){ + STRENTRY *s = provides.getitem(i); + if (s->val[0] != '/' || file_type(s->val)!=1){ + pkgs->neverdelete(); + if (s->testconflicts(name.get(),*pkgs)){ + conflicts.add (s->val,pkgs); + pkgs = new PACKAGES; + ret = false; + } + } + } + delete pkgs; return ret; } *************** *** 373,376 **** --- 423,501 ---- } + static bool package_showconflict ( + CONFLICTS &conf, + bool &replacefiles) + { + bool ret = false; + replacefiles = false; + conf.sort(); + DIALOG_RECORDS dia; + PACKAGES lookup; + lookup.neverdelete(); + int nof = 0; + while (1){ + if (dia.getnb()==0){ + lookup.remove_all(); + dia.newf_head ("",MSG_U(H_CONFLICT,"Resources/Files\tPackages\tDescriptions")); + dia.setbutinfo (MENU_USR1,MSG_U(B_REPLACEFILE,"Install anyway") + ,MSG_R(B_REPLACEFILE)); + for (int i=0; i<conf.getnb(); i++){ + CONFLICT *c = conf.getitem(i); + PACKAGES *pkgs = c->getobj(); + const char *res = c->get(); + for (int j=0; j<pkgs->getnb(); j++){ + PACKAGE *p = pkgs->getitem(j); + if (p->is_installed()){ + lookup.add (p); + char buf[100]; + snprintf (buf,sizeof(buf)-1,"%s\t%s",p->name.get() + ,p->summary.get()); + dia.new_menuitem (res,buf); + res = ""; + } + } + } + if (lookup.getnb()==0){ + xconf_notice (MSG_U(N_NOMORECONFLICTS + ,"You have removed all the conflicting packages.\n" + "We can proceed to the installation now.")); + ret = true; + break; + } + } + MENU_STATUS code = dia.editmenu (MSG_U(T_CONFLICT,"Conflict packages") + ,MSG_U(I_CONFLICT + ,"Some already installed packages provide\n" + "either the same files or functionalities.\n" + "Installing is not recommended unless you really know\n" + "what you are doing\n" + "\n" + "You may inspect the offending packages and even remove\n" + "them to solve the problem as well.") + ,help_conflicts + ,nof,MENUBUT_USR1); + if (code == MENU_QUIT || code == MENU_ESCAPE){ + break; + }else if (code == MENU_USR1){ + replacefiles = true; + ret = true; + break; + }else{ + PACKAGE *p = lookup.getitem(nof); + if (p != NULL){ + p->showinfo(); + if (!package_is_installed(p->name.get())){ + // The package has been removed by the user + // this may change the picture. + p->installed = 0; + dia.remove_all(); + } + } + } + } + return ret; + } + + /* *************** *** 432,446 **** RPM option. */ ! PUBLIC bool PACKAGES::testinstall(bool &nodeps) { nodeps = false; int n = getnb(); PACKAGES needs; // Package which must be added SSTRINGS missing; // Requirements that prevent proper installation // The package providing those are unknown for (int i=0; i<n; i++){ PACKAGE *p = getitem(i); if (p->is_selected()){ ! p->testinstall(needs,missing); } } --- 557,575 ---- RPM option. */ ! PUBLIC bool PACKAGES::testinstall( ! bool &nodeps, ! bool &replacefiles) { nodeps = false; + replacefiles = false; int n = getnb(); PACKAGES needs; // Package which must be added SSTRINGS missing; // Requirements that prevent proper installation // The package providing those are unknown + CONFLICTS conflicts; for (int i=0; i<n; i++){ PACKAGE *p = getitem(i); if (p->is_selected()){ ! p->testinstall(needs,missing,conflicts); } } *************** *** 448,452 **** for (int i=0; i<needs.getnb(); i++){ PACKAGE *p = needs.getitem(i); ! p->testinstall(needs,missing); } // Now remove the packages from the list --- 577,581 ---- for (int i=0; i<needs.getnb(); i++){ PACKAGE *p = needs.getitem(i); ! p->testinstall(needs,missing,conflicts); } // Now remove the packages from the list *************** *** 492,495 **** --- 621,626 ---- ,help_requiredpkgs ,nodeps); + }else if (conflicts.getnb() > 0){ + ret = package_showconflict (conflicts,replacefiles); }else{ ret = true; diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/modules/managerpm/poolstr.cc linuxconf-1.16r9/modules/managerpm/poolstr.cc *** linuxconf-1.16r8/modules/managerpm/poolstr.cc Thu Oct 28 12:17:37 1999 --- linuxconf-1.16r9/modules/managerpm/poolstr.cc Thu Nov 25 23:15:36 1999 *************** *** 191,200 **** while (req != NULL){ // printf ("poolstr unintall :%s: :%s:\n",val,req->pkg->name.get()); ! if (req->pkg->is_installed()){ // printf ("Failed poolstr unintall :%s: :%s:\n",val,req->pkg->name.get()); ! if (needs.lookup(req->pkg)==-1) needs.add (req->pkg); ret = false; } req = req->next; } return ret; --- 191,227 ---- while (req != NULL){ // printf ("poolstr unintall :%s: :%s:\n",val,req->pkg->name.get()); ! PACKAGE *pkg = req->pkg; ! if (pkg->is_installed()){ // printf ("Failed poolstr unintall :%s: :%s:\n",val,req->pkg->name.get()); ! if (needs.lookup(pkg)==-1) needs.add (pkg); ret = false; } req = req->next; + } + return ret; + } + + /* + Check if one installed package supply this symbol. + + Return true if at least one installed supply it. + */ + PUBLIC bool STRENTRY::testconflicts( + const char *name, // Package which is currently tested + // (not in conflict with itself) + PACKAGES &conflicts) + { + bool ret = false; + LOOKUP *pro = provides; + // printf ("test val :%s:\n",val); + while (pro != NULL){ + // printf ("poolstr unintall :%s: :%s:\n",val,req->pkg->name.get()); + PACKAGE *pkg = pro->pkg; + if (pkg->is_installed() && pkg->name.cmp(name) != 0){ + // printf ("Failed poolstr conflicts :%s: :%s:\n",val,pkg->name.get()); + if (conflicts.lookup(pkg)==-1) conflicts.add (pkg); + ret = true; + } + pro = pro->next; } return ret; diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/modules/pppdialin/key.h linuxconf-1.16r9/modules/pppdialin/key.h *** linuxconf-1.16r8/modules/pppdialin/key.h Thu Feb 25 23:26:37 1999 --- linuxconf-1.16r9/modules/pppdialin/key.h Thu Nov 25 15:00:04 1999 *************** *** 22,24 **** --- 22,25 ---- static const char K_DEFPPP[]=".defppp"; static const char K_PROXYARP[]="proxyarp"; + static const char K_FIREWALL[]="firewall"; diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/modules/pppdialin/pppdialin.cc linuxconf-1.16r9/modules/pppdialin/pppdialin.cc *** linuxconf-1.16r8/modules/pppdialin/pppdialin.cc Thu Nov 18 23:23:30 1999 --- linuxconf-1.16r9/modules/pppdialin/pppdialin.cc Thu Nov 25 15:01:53 1999 *************** *** 259,262 **** --- 259,263 ---- char alloc_from_tty; char proxyarp; + char firewall; SSTRING dns1,dns2; SSTRING remoteip; *************** *** 310,313 **** --- 311,315 ---- alloc_from_tty = 0; proxyarp = 0; + firewall = 0; idletime = 0; maxtime = 0; *************** *** 323,326 **** --- 325,329 ---- alloc_from_tty = conf.getvalnum (ptname,K_ALLOCFROMTTY,0); proxyarp = conf.getvalnum (ptname,K_PROXYARP,0); + firewall = conf.getvalnum (ptname,K_FIREWALL,0); idletime = conf.getvalnum (ptname,K_IDLETIME,0); maxtime = conf.getvalnum (ptname,K_MAXTIME,0); *************** *** 378,381 **** --- 381,386 ---- dia.newf_title (MSG_U(T_ROUTING,"Routing"),1,"",MSG_R(T_ROUTING)); dia.newf_chk ("",proxyarp,MSG_R(F_PROXYARP)); + dia.newf_chk (MSG_U(F_FIREWALL,"Update"),firewall + ,MSG_U(I_FIREWALL,"the firewall rules")); first_network = dia.getnb(); int nb_empty = 0; *************** *** 430,433 **** --- 435,439 ---- saveif (conf,K_ALLOCFROMTTY,alloc_from_tty); saveif (conf,K_PROXYARP,proxyarp); + saveif (conf,K_FIREWALL,firewall); saveif (conf,K_IDLETIME,idletime); saveif (conf,K_MAXTIME,maxtime); diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/modules/pppdialin/pppdialin.m linuxconf-1.16r9/modules/pppdialin/pppdialin.m *** linuxconf-1.16r8/modules/pppdialin/pppdialin.m Thu Nov 18 23:23:07 1999 --- linuxconf-1.16r9/modules/pppdialin/pppdialin.m Thu Nov 25 15:06:16 1999 *************** *** 3,7 **** #define DICTIONARY_REQUEST \ const char **_dictionary_pppdialin;\ ! TRANSLATE_SYSTEM_REQ _dictionary_req_pppdialin("pppdialin",_dictionary_pppdialin,40,2);\ void dummy_dict_pppdialin(){} #endif --- 3,7 ---- #define DICTIONARY_REQUEST \ const char **_dictionary_pppdialin;\ ! TRANSLATE_SYSTEM_REQ _dictionary_req_pppdialin("pppdialin",_dictionary_pppdialin,42,2);\ void dummy_dict_pppdialin(){} #endif *************** *** 54,55 **** --- 54,57 ---- #define O_USEDEFAULT 38 #define I_PPPDEV 39 + #define F_FIREWALL 40 + #define I_FIREWALL 41 diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/modules/pppdialin/pppdialin.p linuxconf-1.16r9/modules/pppdialin/pppdialin.p *** linuxconf-1.16r8/modules/pppdialin/pppdialin.p Thu Nov 18 23:18:49 1999 --- linuxconf-1.16r9/modules/pppdialin/pppdialin.p Thu Nov 25 15:39:16 1999 *************** *** 1,7 **** ! /* pppdialin.cc 18/11/1999 23.18.44 */ /* _dict.cc 11/04/1998 02.28.50 */ ! /* pppparms.cc 12/03/1999 22.32.16 */ int ifconfig_getinfo (const char *ifname, char ipaddr[20]); ! /* ipupupd.cc 18/11/1999 23.17.22 */ void ipupupd_check (void); int ipupupd_disconnect (const char *user); --- 1,7 ---- ! /* pppdialin.cc 25/11/1999 15.01.52 */ /* _dict.cc 11/04/1998 02.28.50 */ ! /* pppparms.cc 25/11/1999 15.05.38 */ int ifconfig_getinfo (const char *ifname, char ipaddr[20]); ! /* ipupupd.cc 19/11/1999 01.41.58 */ void ipupupd_check (void); int ipupupd_disconnect (const char *user); diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/modules/pppdialin/pppdialin.pm linuxconf-1.16r9/modules/pppdialin/pppdialin.pm *** linuxconf-1.16r8/modules/pppdialin/pppdialin.pm Thu Nov 18 23:18:49 1999 --- linuxconf-1.16r9/modules/pppdialin/pppdialin.pm Thu Nov 25 15:39:16 1999 *************** *** 1,3 **** ! /* pppdialin.cc 18/11/1999 23.18.44 */ PUBLIC MODULE_pppdialin::MODULE_pppdialin (void); PUBLIC void MODULE_pppdialin::setmenu (DIALOG&dia, --- 1,3 ---- ! /* pppdialin.cc 25/11/1999 15.01.52 */ PUBLIC MODULE_pppdialin::MODULE_pppdialin (void); PUBLIC void MODULE_pppdialin::setmenu (DIALOG&dia, *************** *** 19,24 **** PUBLIC int PPPACCT_COMNG::deluser (PRIVILEGE *priv); /* _dict.cc 11/04/1998 02.28.50 */ ! /* pppparms.cc 12/03/1999 22.32.16 */ PUBLIC PPPINFO::PPPINFO (void); PUBLIC void PPPINFO::load (FILE *fin, const char *name); ! /* ipupupd.cc 18/11/1999 23.17.22 */ --- 19,24 ---- PUBLIC int PPPACCT_COMNG::deluser (PRIVILEGE *priv); /* _dict.cc 11/04/1998 02.28.50 */ ! /* pppparms.cc 25/11/1999 15.05.38 */ PUBLIC PPPINFO::PPPINFO (void); PUBLIC void PPPINFO::load (FILE *fin, const char *name); ! /* ipupupd.cc 19/11/1999 01.41.58 */ diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/modules/pppdialin/pppparms.cc linuxconf-1.16r9/modules/pppdialin/pppparms.cc *** linuxconf-1.16r8/modules/pppdialin/pppparms.cc Fri Mar 12 22:32:17 1999 --- linuxconf-1.16r9/modules/pppdialin/pppparms.cc Thu Nov 25 15:05:38 1999 *************** *** 120,123 **** --- 120,124 ---- public: int proxyarp; + int firewall; int ppp233; char dns1[20]; *************** *** 153,156 **** --- 154,158 ---- ppp233 = 0; proxyarp = 0; + firewall = 0; dns1[0] = '\0'; dns2[0] = '\0'; *************** *** 219,222 **** --- 221,225 ---- loadif (ptbuf,K_PPP233,ppp233); loadif (ptbuf,K_PROXYARP,proxyarp); + loadif (ptbuf,K_FIREWALL,firewall); loadif (ptbuf,K_ALLOCFROMTTY,allocfromtty); loadif (ptbuf,K_IDLETIME,idletime); *************** *** 305,308 **** --- 308,312 ---- printf ("PPP_233=%s\n",info.ppp233 ? "yes" : "no"); printf ("PPP_PROXYARP=%s\n",info.proxyarp ? "yes" : "no"); + printf ("PPP_FIREWALL=%s\n",info.firewall ? "yes" : "no"); printf ("PPP_DNS1=%s\n",info.dns1); printf ("PPP_DNS2=%s\n",info.dns2); diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/modules/pppdialin/ppppostlogin linuxconf-1.16r9/modules/pppdialin/ppppostlogin *** linuxconf-1.16r8/modules/pppdialin/ppppostlogin Thu Nov 18 23:05:04 1999 --- linuxconf-1.16r9/modules/pppdialin/ppppostlogin Thu Nov 25 15:18:57 1999 *************** *** 23,26 **** --- 23,29 ---- fi echo $1 >/var/run/pppdialin.$USER + if [ "$PPP_FIREWALL" = "yes" ] ; then + /bin/linuxconf --modulemain firewall --update + fi fi diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/modules/pppdialin/ppppostlogout linuxconf-1.16r9/modules/pppdialin/ppppostlogout *** linuxconf-1.16r8/modules/pppdialin/ppppostlogout Thu Nov 18 23:05:26 1999 --- linuxconf-1.16r9/modules/pppdialin/ppppostlogout Thu Nov 25 15:06:08 1999 *************** *** 14,17 **** --- 14,20 ---- fi rm -f /var/run/pppdialin.$USER + if [ "$PPP_FIREWALL" = "yes" ] ; then + /bin/linuxconf --modulemain firewall --update + fi fi diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/modules/redhat/reduser.cc linuxconf-1.16r9/modules/redhat/reduser.cc *** linuxconf-1.16r8/modules/redhat/reduser.cc Sun Nov 15 01:31:34 1998 --- linuxconf-1.16r9/modules/redhat/reduser.cc Thu Nov 25 01:09:46 1999 *************** *** 89,92 **** --- 89,93 ---- ret = netconf_system_if ("chage",tmp); } + netconf_closepipes(); return ret; } diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/netconf/daemon.cc linuxconf-1.16r9/netconf/daemon.cc *** linuxconf-1.16r8/netconf/daemon.cc Wed Nov 17 00:22:39 1999 --- linuxconf-1.16r9/netconf/daemon.cc Thu Nov 25 01:10:34 1999 *************** *** 220,224 **** int _out, int _err); ! void getlastmsg (void); /*~PROTOEND~ PIPEINFO */ }; --- 220,224 ---- int _out, int _err); ! void getlastmsg (bool dowait); /*~PROTOEND~ PIPEINFO */ }; *************** *** 262,269 **** ! PUBLIC void PIPEINFO::getlastmsg() { ! int waittime = 2 - (time(NULL) - date); ! if (waittime > 0) sleep (waittime); close (in); bool title_done = false; --- 262,271 ---- ! PUBLIC void PIPEINFO::getlastmsg(bool dowait) { ! if (dowait){ ! int waittime = 2 - (time(NULL) - date); ! if (waittime > 0) sleep (waittime); ! } close (in); bool title_done = false; *************** *** 296,300 **** // Avoid using too many file handles // This situation only happen when setting tons of IP aliases ! if (infos.getnb() >= 70) netconf_getlastmsgs(); infos.add (new PIPEINFO (cmd,in,out,err)); } --- 298,302 ---- // Avoid using too many file handles // This situation only happen when setting tons of IP aliases ! if (infos.getnb() >= 30) netconf_getlastmsgs(); infos.add (new PIPEINFO (cmd,in,out,err)); } *************** *** 302,309 **** } void netconf_getlastmsgs() { for (int i=0; i<infos.getnb(); i++){ ! infos.getitem(i)->getlastmsg(); } infos.remove_all(); --- 304,326 ---- } + /* + Close all pipes (for the last netconf_system_if) and grab late messages + but wait at least 2 seconds from the command startup time to make sure + the command has completed. See the message in bootrc::run. + */ void netconf_getlastmsgs() { for (int i=0; i<infos.getnb(); i++){ ! infos.getitem(i)->getlastmsg(true); ! } ! infos.remove_all(); ! } ! /* ! Close all pipes (for the last netconf_system_if) and grab late messages ! */ ! void netconf_closepipes() ! { ! for (int i=0; i<infos.getnb(); i++){ ! infos.getitem(i)->getlastmsg(false); } infos.remove_all(); diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/netconf/hosts.cc linuxconf-1.16r9/netconf/hosts.cc *** linuxconf-1.16r8/netconf/hosts.cc Thu Sep 23 15:15:56 1999 --- linuxconf-1.16r9/netconf/hosts.cc Tue Nov 23 17:09:02 1999 *************** *** 458,468 **** // The first entry is dummy. It allows addition to the list DIALOG_LISTE dia; ! dia.newf_head ("",MSG_U(T_HOSTHEAD,"IP number\tname & aliases")); for (int i=0; i<nb; i++){ HOST *pth = tbsort[i]; ! char buf[300]; ! sprintf (buf,"%s %s %s",pth->getname1(),pth->getothers() ,pth->getcomment()); - buf[50] = '\0'; dia.new_menuitem(pth->getipnum(),buf); } --- 458,467 ---- // The first entry is dummy. It allows addition to the list DIALOG_LISTE dia; ! dia.newf_head ("",MSG_U(T_HOSTHEAD,"IP number\tname\taliases")); for (int i=0; i<nb; i++){ HOST *pth = tbsort[i]; ! char buf[100]; ! snprintf (buf,sizeof(buf)-1,"%s\t%s\t%s",pth->getname1(),pth->getothers() ,pth->getcomment()); dia.new_menuitem(pth->getipnum(),buf); } diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/netconf/netconf.p linuxconf-1.16r9/netconf/netconf.p *** linuxconf-1.16r8/netconf/netconf.p Thu Nov 18 23:48:59 1999 --- linuxconf-1.16r9/netconf/netconf.p Thu Nov 25 01:10:34 1999 *************** *** 7,11 **** /* calcmask.cc 26/07/1997 14.08.38 */ /* command.cc 30/04/1998 21.50.10 */ ! /* daemon.cc 17/11/1999 00.22.38 */ int file_empty (const char *fpath); void daemon_setsession (char mode); --- 7,11 ---- /* calcmask.cc 26/07/1997 14.08.38 */ /* command.cc 30/04/1998 21.50.10 */ ! /* daemon.cc 25/11/1999 01.10.28 */ int file_empty (const char *fpath); void daemon_setsession (char mode); *************** *** 22,25 **** --- 22,26 ---- EXPORT int netconf_system (int timeout, const char *cmd); void netconf_getlastmsgs (void); + void netconf_closepipes (void); /* daemon1.cc 08/04/1999 15.08.14 */ void daemon_register (DAEMON_INTERNAL *dae, *************** *** 119,123 **** const char *netmask, const char *device); ! /* hosts.cc 23/09/1999 15.15.56 */ void *operator new (size_t size); char *replaceif (char *last, const char *newval); --- 120,124 ---- const char *netmask, const char *device); ! /* hosts.cc 23/11/1999 17.09.02 */ void *operator new (size_t size); char *replaceif (char *last, const char *newval); *************** *** 133,137 **** int ifconfig_getinfo (const char *ifname, IFCONFIG_INFO&info); /* internal.cc 03/10/1995 01.09.14 */ ! /* ipalias.cc 12/09/1999 00.35.12 */ void ipalias_sethook (int (*fct_load)(const char *devname, SSTRINGS&, SSTRINGS &), --- 134,138 ---- int ifconfig_getinfo (const char *ifname, IFCONFIG_INFO&info); /* internal.cc 03/10/1995 01.09.14 */ ! /* ipalias.cc 22/11/1999 16.27.26 */ void ipalias_sethook (int (*fct_load)(const char *devname, SSTRINGS&, SSTRINGS &), *************** *** 220,224 **** void simul_addmsg (const char *ctl, ...); int simul_prompt (bool showdontquit); ! /* start.cc 16/09/1999 17.55.00 */ int netconf_startstop (const char *name, const char *service, int &go); void netconf_setservhook (int (*_fct_serv_get)(SERVICES&tb), --- 221,225 ---- void simul_addmsg (const char *ctl, ...); int simul_prompt (bool showdontquit); ! /* start.cc 22/11/1999 11.54.06 */ int netconf_startstop (const char *name, const char *service, int &go); void netconf_setservhook (int (*_fct_serv_get)(SERVICES&tb), diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/netconf/netconf.pe linuxconf-1.16r9/netconf/netconf.pe *** linuxconf-1.16r8/netconf/netconf.pe Thu Nov 18 23:49:00 1999 --- linuxconf-1.16r9/netconf/netconf.pe Thu Nov 25 01:10:35 1999 *************** *** 4,8 **** /* calcmask.cc 26/07/1997 14.08.38 */ /* command.cc 30/04/1998 21.50.10 */ ! /* daemon.cc 17/11/1999 00.22.38 */ EXPORT int netconf_system (int timeout, const char *cmd); /* daemon1.cc 08/04/1999 15.08.14 */ --- 4,8 ---- /* calcmask.cc 26/07/1997 14.08.38 */ /* command.cc 30/04/1998 21.50.10 */ ! /* daemon.cc 25/11/1999 01.10.34 */ EXPORT int netconf_system (int timeout, const char *cmd); /* daemon1.cc 08/04/1999 15.08.14 */ *************** *** 21,29 **** /* host.cc 30/08/1999 23.44.24 */ /* hostinfo.cc 09/05/1998 13.55.28 */ ! /* hosts.cc 23/09/1999 15.15.56 */ /* html_access.cc 12/09/1999 00.45.36 */ /* ifconfig.cc 19/04/1999 10.50.30 */ /* internal.cc 03/10/1995 01.09.14 */ ! /* ipalias.cc 12/09/1999 00.35.12 */ /* ipx.cc 13/08/1999 11.24.30 */ /* level.cc 10/02/1998 11.08.26 */ --- 21,29 ---- /* host.cc 30/08/1999 23.44.24 */ /* hostinfo.cc 09/05/1998 13.55.28 */ ! /* hosts.cc 23/11/1999 17.09.02 */ /* html_access.cc 12/09/1999 00.45.36 */ /* ifconfig.cc 19/04/1999 10.50.30 */ /* internal.cc 03/10/1995 01.09.14 */ ! /* ipalias.cc 22/11/1999 16.27.26 */ /* ipx.cc 13/08/1999 11.24.30 */ /* level.cc 10/02/1998 11.08.26 */ *************** *** 56,60 **** EXPORT int simul_ishint (void); EXPORT int simul_ison (void); ! /* start.cc 16/09/1999 17.55.00 */ /* thishost.cc 04/04/1998 00.19.30 */ /* thishost1.cc 06/05/1998 14.17.28 */ --- 56,60 ---- EXPORT int simul_ishint (void); EXPORT int simul_ison (void); ! /* start.cc 22/11/1999 11.54.06 */ /* thishost.cc 04/04/1998 00.19.30 */ /* thishost1.cc 06/05/1998 14.17.28 */ diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/netconf/netconf.pm linuxconf-1.16r9/netconf/netconf.pm *** linuxconf-1.16r8/netconf/netconf.pm Thu Nov 18 23:48:59 1999 --- linuxconf-1.16r9/netconf/netconf.pm Thu Nov 25 01:10:34 1999 *************** *** 41,45 **** const char *sem_file); PUBLIC int COMMAND::kill (int signal_num); ! /* daemon.cc 17/11/1999 00.22.38 */ PUBLIC DAEMON::DAEMON (void); PUBLIC PIPEINFO::PIPEINFO (const char *cmd, --- 41,45 ---- const char *sem_file); PUBLIC int COMMAND::kill (int signal_num); ! /* daemon.cc 25/11/1999 01.10.28 */ PUBLIC DAEMON::DAEMON (void); PUBLIC PIPEINFO::PIPEINFO (const char *cmd, *************** *** 47,51 **** int _out, int _err); ! PUBLIC void PIPEINFO::getlastmsg (void); PUBLIC PIPEINFO *PIPEINFOS::getitem (int no)const; PUBLIC VIRTUAL int DAEMON::start (void); --- 47,51 ---- int _out, int _err); ! PUBLIC void PIPEINFO::getlastmsg (bool dowait); PUBLIC PIPEINFO *PIPEINFOS::getitem (int no)const; PUBLIC VIRTUAL int DAEMON::start (void); *************** *** 241,245 **** /* host.cc 30/08/1999 23.44.24 */ /* hostinfo.cc 09/05/1998 13.55.28 */ ! /* hosts.cc 23/09/1999 15.15.56 */ PUBLIC void HOST::set (const char *buf); PUBLIC HOST::HOST (const char *buf); --- 241,245 ---- /* host.cc 30/08/1999 23.44.24 */ /* hostinfo.cc 09/05/1998 13.55.28 */ ! /* hosts.cc 23/11/1999 17.09.02 */ PUBLIC void HOST::set (const char *buf); PUBLIC HOST::HOST (const char *buf); *************** *** 302,306 **** /* ifconfig.cc 19/04/1999 10.50.30 */ /* internal.cc 03/10/1995 01.09.14 */ ! /* ipalias.cc 12/09/1999 00.35.12 */ PRIVATE void IP_ALIAS::init (int _num, const char *_ip, --- 302,306 ---- /* ifconfig.cc 19/04/1999 10.50.30 */ /* internal.cc 03/10/1995 01.09.14 */ ! /* ipalias.cc 22/11/1999 16.27.26 */ PRIVATE void IP_ALIAS::init (int _num, const char *_ip, *************** *** 414,418 **** /* simple.cc 27/01/1999 19.05.26 */ /* simul.cc 27/08/1998 16.14.42 */ ! /* start.cc 16/09/1999 17.55.00 */ PUBLIC SERVICE::SERVICE (const char *_name, const char *_desc, --- 414,418 ---- /* simple.cc 27/01/1999 19.05.26 */ /* simul.cc 27/08/1998 16.14.42 */ ! /* start.cc 22/11/1999 11.54.06 */ PUBLIC SERVICE::SERVICE (const char *_name, const char *_desc, diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/rpmfiles/rpm.spec-files linuxconf-1.16r9/rpmfiles/rpm.spec-files *** linuxconf-1.16r8/rpmfiles/rpm.spec-files Mon Nov 8 11:42:44 1999 --- linuxconf-1.16r9/rpmfiles/rpm.spec-files Thu Nov 25 21:34:09 1999 *************** *** 19,22 **** --- 19,23 ---- /bin/userconf /sbin/modemconf + /sbin/managerpm %config /bin/remadmin diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/rules.mak linuxconf-1.16r9/rules.mak *** linuxconf-1.16r8/rules.mak Tue Nov 23 09:49:36 1999 --- linuxconf-1.16r9/rules.mak Fri Nov 26 16:15:20 1999 *************** *** 18,22 **** CC=gcc LINUXCONF_REV=1.16 ! LINUXCONF_SUBREV=8 LINUXCONF_SUBSUBREV=0 # liblinuxconf revision --- 18,22 ---- CC=gcc LINUXCONF_REV=1.16 ! LINUXCONF_SUBREV=9 LINUXCONF_SUBSUBREV=0 # liblinuxconf revision diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/userconf/userconf.m linuxconf-1.16r9/userconf/userconf.m *** linuxconf-1.16r8/userconf/userconf.m Wed Sep 29 14:22:30 1999 --- linuxconf-1.16r9/userconf/userconf.m Wed Nov 24 23:46:01 1999 *************** *** 3,7 **** #define DICTIONARY_REQUEST \ const char **_dictionary_userconf;\ ! TRANSLATE_SYSTEM_REQ _dictionary_req_userconf("userconf",_dictionary_userconf,251,14);\ void dummy_dict_userconf(){} #endif --- 3,7 ---- #define DICTIONARY_REQUEST \ const char **_dictionary_userconf;\ ! TRANSLATE_SYSTEM_REQ _dictionary_req_userconf("userconf",_dictionary_userconf,252,14);\ void dummy_dict_userconf(){} #endif *************** *** 265,266 **** --- 265,267 ---- #define E_IVLDLOGINCHAR 249 #define E_FAILCREATE 250 + #define P_USERACCOUTS 251 diff -rc2P -x *.o -x *.a -x *.bak -x *~ -x *.help -x *.old -x *.nap -x *.nar -x *.nas -x *.gif -x *.class linuxconf-1.16r8/userconf/users.cc linuxconf-1.16r9/userconf/users.cc *** linuxconf-1.16r8/userconf/users.cc Thu Oct 14 15:28:39 1999 --- linuxconf-1.16r9/userconf/users.cc Wed Nov 24 23:45:40 1999 *************** *** 798,825 **** { int ret = -1; ! /* predefined, we normally need these values... */ ! USRACC_FILTER filter; ! MENU_STATUS selcod = setselectprefix(filter,special,true); ! if (selcod == MENU_ADD){ ! if (perm_access(priv,MSG_R(P_USERDB))){ ! addone (special,NULL,NULL,priv,may_edit); ! } ! }else if (selcod == MENU_ACCEPT){ ! while (1){ ! MENU_STATUS code; ! int choice = 0; ! USER *usr = select (special,1,code,choice,filter); ! if (code == MENU_ESCAPE || code == MENU_QUIT){ ! break; ! }else if (code == MENU_OK){ ! if (usr != NULL){ ! int status = editone(usr,false,priv,may_edit); ! if (status != -1){ ! ret = 0; } - } - }else if (perm_access(priv,MSG_R(P_USERDB))){ - if (code == MENU_ADD){ - addone (special,NULL,NULL,priv,may_edit); } } --- 798,827 ---- { int ret = -1; ! if (perm_access (priv,MSG_U(P_USERACCOUTS,"To view and edit user accounts"))){ ! /* predefined, we normally need these values... */ ! USRACC_FILTER filter; ! MENU_STATUS selcod = setselectprefix(filter,special,true); ! if (selcod == MENU_ADD){ ! if (perm_access(priv,MSG_R(P_USERDB))){ ! addone (special,NULL,NULL,priv,may_edit); ! } ! }else if (selcod == MENU_ACCEPT){ ! while (1){ ! MENU_STATUS code; ! int choice = 0; ! USER *usr = select (special,1,code,choice,filter); ! if (code == MENU_ESCAPE || code == MENU_QUIT){ ! break; ! }else if (code == MENU_OK){ ! if (usr != NULL){ ! int status = editone(usr,false,priv,may_edit); ! if (status != -1){ ! ret = 0; ! } ! } ! }else if (perm_access(priv,MSG_R(P_USERDB))){ ! if (code == MENU_ADD){ ! addone (special,NULL,NULL,priv,may_edit); } } }