- if (send_ok())
- lose("sending okay for inst_001");
- code = receive_object(conn, (char *)&instructions, STRING_T);
- if (code) {
- report_error("reporting failure to receive instructions");
- return;
- }
- have_instructions = 1;
- if (send_ok())
- lose("sending okay after instructions");
- dprintf(("got instructions: %s\n", STRING_DATA(instructions)));
+ int file_size;
+ int checksum;
+ char *pathname;
+
+ if (config_lookup("noinstructions")) {
+ code = EPERM;
+ code = send_object(conn, (char *)&code, INTEGER_T);
+ com_err(whoami, EPERM, "Not allowed to receive instructions");
+ return;
+ }
+
+ str += 8;
+ while (*str == ' ')
+ str++;
+ if (!*str) {
+ failure:
+ reject_call(MR_ARGS);
+ return;
+ }
+ file_size = atoi(str);
+ while (isdigit(*str))
+ str++;
+ while (*str == ' ')
+ str++;
+ checksum = atoi(str);
+ while (isdigit(*str))
+ str++;
+ while (*str == ' ')
+ str++;
+ if (*str != '/')
+ goto failure;
+ pathname = str;
+ if (!have_authorization) {
+ reject_call(MR_PERM);
+ return;
+ }
+ code = send_ok();
+ if (code)
+ lose("sending ok for file xfer (2)");
+ code = get_file(pathname, file_size, checksum, 0555, 0);
+ if (!code) {
+ char buf[BUFSIZ];
+ have_instructions = 1;
+ strcpy(buf, "transferred file ");
+ strcat(buf, pathname);
+ mr_log_info(buf);
+ }
+#ifdef DEBUG
+ printf("got instructions: %s\n", STRING_DATA(instructions));
+#endif