You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently autolab submit insists on being given the name of a file that both exists and is a "regular file" (file_exists is true only for files that pass stat(file, &st) == 0 && S_ISREG(st.st_mode)). This means it is impossible to get it to read the submission from standard input, which makes it significantly harder to feed a submission to autolab submit from a C program.
Please make at least one, preferably both, of the following changes:
If the file name given on the command line is a single ASCII minus sign (-), read the submission from standard input. (Skip the "does this file exist" check in [], and then all the way down in RawClient::raw_request, change how you call curl_formadd.)
Allow use of /dev/stdin as the file argument, by changing file_exists so that it considers files that exist but aren't regular files, as long as you can read() from them normally. (Probably the right thing is to blacklist S_ISDIR and S_ISBLK and accept anything else.)
Also, whichever of the two changes you make, you need to test that submitting standard input works correctly when stdin is any of:
a file that is open but unlinked (e.g. what you get from tmpfile())
a pipe
a stream-oriented socket (testing socketpair(AF_LOCAL, SOCK_STREAM, 0) sockets should be good enough)
a tty
These are in decreasing order of importance, but ideally all of them would work.
The text was updated successfully, but these errors were encountered:
Currently
autolab submit
insists on being given the name of a file that both exists and is a "regular file" (file_exists
is true only for files that passstat(file, &st) == 0 && S_ISREG(st.st_mode)
). This means it is impossible to get it to read the submission from standard input, which makes it significantly harder to feed a submission toautolab submit
from a C program.Please make at least one, preferably both, of the following changes:
-
), read the submission from standard input. (Skip the "does this file exist" check in [], and then all the way down inRawClient::raw_request
, change how you call curl_formadd.)/dev/stdin
as the file argument, by changingfile_exists
so that it considers files that exist but aren't regular files, as long as you can read() from them normally. (Probably the right thing is to blacklist S_ISDIR and S_ISBLK and accept anything else.)Also, whichever of the two changes you make, you need to test that submitting standard input works correctly when stdin is any of:
tmpfile()
)socketpair(AF_LOCAL, SOCK_STREAM, 0)
sockets should be good enough)These are in decreasing order of importance, but ideally all of them would work.
The text was updated successfully, but these errors were encountered: