+ if (share) {
+ int pid, rv;
+ FILE *fp;
+ char dir[20];
+ struct stat buf;
+ fp = fopen("/var/run/mdadm/autorebuild.pid", "r");
+ if (fp) {
+ fscanf(fp, "%d", &pid);
+ sprintf(dir, "/proc/%d", pid);
+ rv = stat(dir, &buf);
+ if (rv != -1) {
+ if (scan) {
+ fprintf(stderr, Name ": Only one "
+ "autorebuild process allowed"
+ " in scan mode, aborting\n");
+ fclose(fp);
+ return 1;
+ } else {
+ fprintf(stderr, Name ": Warning: One"
+ " autorebuild process already"
+ " running.");
+ }
+ }
+ fclose(fp);
+ }
+ if (scan) {
+ fp = fopen("/var/run/mdadm/autorebuild.pid", "w");
+ if (!fp)
+ fprintf(stderr, Name ": Cannot create"
+ " autorebuild.pid "
+ "file\n");
+ else {
+ pid = getpid();
+ fprintf(fp, "%d\n", pid);
+ fclose(fp);
+ }
+ }
+ }
+