Split check_grp_file() and check_sgr_file() out of main().

This commit is contained in:
nekral-guest 2008-01-01 13:48:49 +00:00
parent f6f6eeda8e
commit 612820cb9a
2 changed files with 70 additions and 57 deletions

View File

@ -3,6 +3,8 @@
* src/grpck.c: Split process_flags(), open_files(), and * src/grpck.c: Split process_flags(), open_files(), and
close_files() out of main(). New global variables is_shadow, close_files() out of main(). New global variables is_shadow,
sort_mode, use_system_grp_file, and use_system_sgr_file. sort_mode, use_system_grp_file, and use_system_sgr_file.
* src/grpck.c: Split check_grp_file() and check_sgr_file() out of
main().
2007-12-31 Nicolas François <nicolas.francois@centraliens.net> 2007-12-31 Nicolas François <nicolas.francois@centraliens.net>

View File

@ -260,47 +260,15 @@ static void close_files (int changed)
(void) gr_unlock (); (void) gr_unlock ();
} }
/* static void check_grp_file (int *errors, int *changed)
* grpck - verify group file integrity
*/
int main (int argc, char **argv)
{ {
int errors = 0;
int changed = 0;
int i;
struct commonio_entry *gre, *tgre; struct commonio_entry *gre, *tgre;
struct group *grp; struct group *grp;
int i;
#ifdef SHADOWGRP #ifdef SHADOWGRP
struct commonio_entry *sge, *tsge;
struct sgrp *sgr; struct sgrp *sgr;
#endif #endif
/*
* Get my name so that I can use it to report errors.
*/
Prog = Basename (argv[0]);
setlocale (LC_ALL, "");
bindtextdomain (PACKAGE, LOCALEDIR);
textdomain (PACKAGE);
OPENLOG ("grpck");
/* Parse the command line arguments */
process_flags (argc, argv);
open_files ();
if (sort_mode) {
gr_sort ();
#ifdef SHADOWGRP
if (is_shadow)
sgr_sort ();
#endif
goto write_and_bye;
}
/* /*
* Loop through the entire group file. * Loop through the entire group file.
*/ */
@ -325,7 +293,7 @@ int main (int argc, char **argv)
*/ */
printf (_("invalid group file entry\n")); printf (_("invalid group file entry\n"));
printf (_("delete line '%s'? "), gre->line); printf (_("delete line '%s'? "), gre->line);
errors++; *errors += 1;
/* /*
* prompt the user to delete the entry or not * prompt the user to delete the entry or not
@ -342,7 +310,7 @@ int main (int argc, char **argv)
delete_gr: delete_gr:
SYSLOG ((LOG_INFO, "delete group line `%s'", SYSLOG ((LOG_INFO, "delete group line `%s'",
gre->line)); gre->line));
changed++; *changed = 1;
__gr_del_entry (gre); __gr_del_entry (gre);
continue; continue;
@ -381,7 +349,7 @@ int main (int argc, char **argv)
*/ */
printf (_("duplicate group entry\n")); printf (_("duplicate group entry\n"));
printf (_("delete line '%s'? "), gre->line); printf (_("delete line '%s'? "), gre->line);
errors++; *errors += 1;
/* /*
* prompt the user to delete the entry or not * prompt the user to delete the entry or not
@ -394,7 +362,7 @@ int main (int argc, char **argv)
* Check for invalid group names. --marekm * Check for invalid group names. --marekm
*/ */
if (!check_group_name (grp->gr_name)) { if (!check_group_name (grp->gr_name)) {
errors++; *errors += 1;
printf (_("invalid group name '%s'\n"), grp->gr_name); printf (_("invalid group name '%s'\n"), grp->gr_name);
} }
@ -418,7 +386,7 @@ int main (int argc, char **argv)
* Can't find this user. Remove them * Can't find this user. Remove them
* from the list. * from the list.
*/ */
errors++; *errors += 1;
printf (_("group %s: no user %s\n"), printf (_("group %s: no user %s\n"),
grp->gr_name, grp->gr_mem[i]); grp->gr_name, grp->gr_mem[i]);
printf (_("delete member '%s'? "), grp->gr_mem[i]); printf (_("delete member '%s'? "), grp->gr_mem[i]);
@ -428,7 +396,7 @@ int main (int argc, char **argv)
SYSLOG ((LOG_INFO, "delete member '%s' group '%s'", SYSLOG ((LOG_INFO, "delete member '%s' group '%s'",
grp->gr_mem[i], grp->gr_name)); grp->gr_mem[i], grp->gr_name));
changed++; *changed = 1;
delete_member (grp->gr_mem, grp->gr_mem[i]); delete_member (grp->gr_mem, grp->gr_mem[i]);
gre->changed = 1; gre->changed = 1;
__gr_set_changed (); __gr_set_changed ();
@ -447,7 +415,7 @@ int main (int argc, char **argv)
sgr_file); sgr_file);
printf (_("add group '%s' in %s ?"), printf (_("add group '%s' in %s ?"),
grp->gr_name, sgr_file); grp->gr_name, sgr_file);
errors++; *errors += 1;
if (yes_or_no (read_only)) { if (yes_or_no (read_only)) {
struct sgrp sg; struct sgrp sg;
struct group gr; struct group gr;
@ -460,7 +428,7 @@ int main (int argc, char **argv)
SYSLOG ((LOG_INFO, SYSLOG ((LOG_INFO,
"add group `%s' to `%s'", "add group `%s' to `%s'",
grp->gr_name, sgr_file)); grp->gr_name, sgr_file));
changed++; *changed = 1;
if (!sgr_update (&sg)) { if (!sgr_update (&sg)) {
fprintf (stderr, fprintf (stderr,
@ -507,10 +475,15 @@ int main (int argc, char **argv)
#endif #endif
} }
}
#ifdef SHADOWGRP #ifdef SHADOWGRP
if (!is_shadow) static void check_sgr_file (int *errors, int *changed)
goto shadow_done; {
struct group *grp;
struct commonio_entry *sge, *tsge;
struct sgrp *sgr;
int i;
/* /*
* Loop through the entire shadow group file. * Loop through the entire shadow group file.
@ -530,7 +503,7 @@ int main (int argc, char **argv)
*/ */
printf (_("invalid shadow group file entry\n")); printf (_("invalid shadow group file entry\n"));
printf (_("delete line '%s'? "), sge->line); printf (_("delete line '%s'? "), sge->line);
errors++; *errors += 1;
/* /*
* prompt the user to delete the entry or not * prompt the user to delete the entry or not
@ -547,7 +520,7 @@ int main (int argc, char **argv)
delete_sg: delete_sg:
SYSLOG ((LOG_INFO, "delete shadow line `%s'", SYSLOG ((LOG_INFO, "delete shadow line `%s'",
sge->line)); sge->line));
changed++; *changed = 1;
__sgr_del_entry (sge); __sgr_del_entry (sge);
continue; continue;
@ -586,7 +559,7 @@ int main (int argc, char **argv)
*/ */
printf (_("duplicate shadow group entry\n")); printf (_("duplicate shadow group entry\n"));
printf (_("delete line '%s'? "), sge->line); printf (_("delete line '%s'? "), sge->line);
errors++; *errors += 1;
/* /*
* prompt the user to delete the entry or not * prompt the user to delete the entry or not
@ -603,7 +576,7 @@ int main (int argc, char **argv)
printf (_("no matching group file entry in %s\n"), printf (_("no matching group file entry in %s\n"),
grp_file); grp_file);
printf (_("delete line '%s'? "), sge->line); printf (_("delete line '%s'? "), sge->line);
errors++; *errors += 1;
if (yes_or_no (read_only)) if (yes_or_no (read_only))
goto delete_sg; goto delete_sg;
} else { } else {
@ -639,7 +612,7 @@ int main (int argc, char **argv)
* Can't find this user. Remove them * Can't find this user. Remove them
* from the list. * from the list.
*/ */
errors++; *errors += 1;
printf (_ printf (_
("shadow group %s: no administrative user %s\n"), ("shadow group %s: no administrative user %s\n"),
sgr->sg_name, sgr->sg_adm[i]); sgr->sg_name, sgr->sg_adm[i]);
@ -652,7 +625,7 @@ int main (int argc, char **argv)
SYSLOG ((LOG_INFO, SYSLOG ((LOG_INFO,
"delete admin `%s' from shadow group `%s'", "delete admin `%s' from shadow group `%s'",
sgr->sg_adm[i], sgr->sg_name)); sgr->sg_adm[i], sgr->sg_name));
changed++; *changed = 1;
delete_member (sgr->sg_adm, sgr->sg_adm[i]); delete_member (sgr->sg_adm, sgr->sg_adm[i]);
sge->changed = 1; sge->changed = 1;
__sgr_set_changed (); __sgr_set_changed ();
@ -669,7 +642,7 @@ int main (int argc, char **argv)
/* /*
* Can't find this user. Remove them from the list. * Can't find this user. Remove them from the list.
*/ */
errors++; *errors += 1;
printf (_("shadow group %s: no user %s\n"), printf (_("shadow group %s: no user %s\n"),
sgr->sg_name, sgr->sg_mem[i]); sgr->sg_name, sgr->sg_mem[i]);
printf (_("delete member '%s'? "), sgr->sg_mem[i]); printf (_("delete member '%s'? "), sgr->sg_mem[i]);
@ -680,17 +653,55 @@ int main (int argc, char **argv)
SYSLOG ((LOG_INFO, SYSLOG ((LOG_INFO,
"delete member `%s' from shadow group `%s'", "delete member `%s' from shadow group `%s'",
sgr->sg_mem[i], sgr->sg_name)); sgr->sg_mem[i], sgr->sg_name));
changed++; *changed = 1;
delete_member (sgr->sg_mem, sgr->sg_mem[i]); delete_member (sgr->sg_mem, sgr->sg_mem[i]);
sge->changed = 1; sge->changed = 1;
__sgr_set_changed (); __sgr_set_changed ();
} }
} }
}
shadow_done:
#endif /* SHADOWGRP */ #endif /* SHADOWGRP */
write_and_bye: /*
* grpck - verify group file integrity
*/
int main (int argc, char **argv)
{
int errors = 0;
int changed = 0;
/*
* Get my name so that I can use it to report errors.
*/
Prog = Basename (argv[0]);
setlocale (LC_ALL, "");
bindtextdomain (PACKAGE, LOCALEDIR);
textdomain (PACKAGE);
OPENLOG ("grpck");
/* Parse the command line arguments */
process_flags (argc, argv);
open_files ();
if (sort_mode) {
gr_sort ();
#ifdef SHADOWGRP
if (is_shadow)
sgr_sort ();
changed = 1;
#endif
} else {
check_grp_file (&errors, &changed);
#ifdef SHADOWGRP
if (is_shadow) {
check_sgr_file (&errors, &changed);
}
#endif
}
/* Commit the change in the database if needed */ /* Commit the change in the database if needed */
close_files (changed); close_files (changed);