Subversion Repositories SvarDOS

Rev

Rev 995 | Rev 1600 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 995 Rev 1599
Line 209... Line 209...
209
  pkg_freeflist(flist);
209
  pkg_freeflist(flist);
210
  return(ziplinkedlist);
210
  return(ziplinkedlist);
211
}
211
}
212
 
212
 
213
 
213
 
-
 
214
/* look for a "warn" field in the package's LSM file and display it if found */
-
 
215
static void display_warn_if_exists(const char *pkgname, const char *dosdir, char *buff, size_t buffsz) {
-
 
216
  FILE *fd;
-
 
217
  char *msgptr;
-
 
218
  int warncount = 0, i;
-
 
219
 
-
 
220
  sprintf(buff, "%s\\appinfo\\%s.lsm", dosdir, pkgname);
-
 
221
  fd = fopen(buff, "rb");
-
 
222
  if (fd == NULL) return;
-
 
223
 
-
 
224
  while (freadtokval(fd, buff, buffsz, &msgptr, ':') == 0) {
-
 
225
    if (msgptr != NULL) {
-
 
226
      if (strcasecmp(buff, "warn") == 0) {
-
 
227
        /* print a visual delimiter */
-
 
228
        if (warncount == 0) {
-
 
229
          puts("");
-
 
230
          for (i = 0; i < 79; i++) putchar('*');
-
 
231
          puts("");
-
 
232
        }
-
 
233
        /* there may be more than one "warn" line */
-
 
234
        puts(msgptr);
-
 
235
        warncount++;
-
 
236
      }
-
 
237
    }
-
 
238
  }
-
 
239
 
-
 
240
  fclose(fd);
-
 
241
 
-
 
242
  /* if one or more warn lines have been displayed then close with a delimiter again */
-
 
243
  if (warncount > 0) {
-
 
244
    for (i = 0; i < 79; i++) putchar('*');
-
 
245
    puts("");
-
 
246
  }
-
 
247
 
-
 
248
}
-
 
249
 
-
 
250
 
214
/* install a package that has been prepared already. returns 0 on success,
251
/* install a package that has been prepared already. returns 0 on success,
215
 * or a negative value on error, or a positive value on warning */
252
 * or a negative value on error, or a positive value on warning */
216
int pkginstall_installpackage(const char *pkgname, const char *dosdir, const struct customdirs *dirlist, struct ziplist *ziplinkedlist, FILE *zipfd) {
253
int pkginstall_installpackage(const char *pkgname, const char *dosdir, const struct customdirs *dirlist, struct ziplist *ziplinkedlist, FILE *zipfd) {
217
  char buff[256];
254
  char buff[256];
218
  char fulldestfilename[256];
255
  char fulldestfilename[256];
Line 260... Line 297...
260
  }
297
  }
261
  fclose(lstfd);
298
  fclose(lstfd);
262
 
299
 
263
  kitten_printf(3, 19, pkgname, filesextractedsuccess, filesextractedfailure); /* "Package %s installed: %ld files extracted, %ld errors." */
300
  kitten_printf(3, 19, pkgname, filesextractedsuccess, filesextractedfailure); /* "Package %s installed: %ld files extracted, %ld errors." */
264
  puts("");
301
  puts("");
-
 
302
 
-
 
303
  /* scan the LSM file for a "warn" message to display */
-
 
304
  display_warn_if_exists(pkgname, dosdir, buff, sizeof(buff));
-
 
305
 
265
  return(filesextractedfailure);
306
  return(filesextractedfailure);
266
}
307
}