1 /* chstack - set stack size */
5 #define OFF 48L /* offset of stacksize in file */
6 #define MAX 32768L /* maximum accepted stacksize */
20 if (argc != 3 || (*p != '=' && *p != '+' && *p != '-')) {
21 fprintf(stderr, "Usage: %s {=+-}amount file\n", argv[0]);
26 fd = open(argv[2], 2);
28 fprintf(stderr, "%s: cannot open %s\n", argv[0], argv[2]);
32 if (lseek(fd, OFF, 0) < 0 || getlong(fd, ¤t) < 0) {
33 fprintf(stderr, "%s: cannot read %s\n", argv[0], argv[2]);
37 if (*p == '=') current = n;
38 else if (*p == '-') current -= n;
41 if (current > MAX || current <= 0) {
42 fprintf(stderr, "%s: resulting stack size %ld too large or too small\n", argv[0], current);
45 if (lseek(fd, OFF, 0) < 0 || putlong(fd, ¤t) < 0) {
46 fprintf(stderr, "%s: can't modify %s\n", argv[0], argv[2]);
49 printf("%s: Stack area changed from %ld to %ld bytes.\n",
50 argv[2], old, current);
59 if (read(fd, buf, 4) < 4) return -1;
60 *l = ((((long)(buf[3]&0377)<<8)|(long)(buf[2]&0377)<<8)|(long)(buf[1]&0377)<<8)|(long)(buf[0]&0377);
73 if (write(fd, buf, 4) < 4) return -1;