summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2014-09-19Change global in-fifos from O_RDWR to O_RDONLYFRIGN
O_RDWR is a dirty hack to get around the issue of infinite EOFs while reading an in-FIFO. Instead, stop breaking POSIX and set the FIFOs to O_RDONLY. In case a read returns EOF (r == 0), we reopen the fd. Same will be applied to the friend-fifos (especially file_in), helping us get rid of strange timeouts and heuristics and rather solve the problem the POSIX-way. The only downside to this is that we are blind for writes to the in-FIFOs between catching read == 0 and close(), but this is not an issue. To make reopening as easy as possible, I added a dirfd to all slots. While at it, I changed the initial setup and removed the chdir() in favor of the POSIX-2008-compliant *at-functions. This lets us do stuff without having to use snprintf to build paths and is more bulletproof even in case the directory is renamed.
2014-09-18Missed some moresin
2014-09-18No need to specify modes, default to 0644 and 0777sin
2014-09-18OUT_F is reserved for the edge-case where we don't know if OUT is a STATIC ↵sin
or FOLDER So use STATIC here.
2014-09-18Print a message when we reject a friend requestsin
2014-09-18Allow the user to reject a friend requestsin
2014-09-18We need O_WRONLY for text_out as wellsin
2014-09-18Remember to ftruncate() before updating the filessin
2014-09-18Remove writeline()sin
2014-09-18We can't use TAILQ_REMOVE inside TAILQ_FOREACHsin
2014-09-18Add fifos for incoming requests and remove cmd-parserFRIGN
2014-09-18Rework file-transferssin
For aborted transfers, we will have to move the transfer to the TRANSFER_KILLED state. Then we'll have to wait until the input FIFO stops being readable (the user ^C the transfer). Only then can we move to TRANSFER_NONE. If we move to TRANSFER_NONE immediately then we will initiate a new transfer which we don't want to do. The basic idea is: If we move into the TRANSFER_KILLED state and timeout has expired (50ms?) without the fd being readable (the user did a ^C on cat file > file_in) then move the transfer to TRANSFER_NONE state.
2014-09-17Fix wall of gcc-warningsFRIGN
2014-09-17Rename ratatox to ratoxsin
2014-09-17Save state to `.ratatox.data'sin
Makes it a bit more difficult to accidentally delete it and the user can't really interact with it so make it hidden.
2014-09-17Fix FIFO crazinesssin
2014-09-17Fix select() spinsin
2014-09-17Ensure proper permissions on request/outsin
2014-09-17Remember to ftruncate() before dprintf()sin
2014-09-17Rework data-structuresFRIGN
2014-09-17It is text_out not textoutsin
2014-09-17Use upper-case when printing IDssin
2014-09-16Catch TOX_FAERR_{BADCHECKSUM,SETNEWNOSPAM}sin
2014-09-16Add FIFO for sending a friend requestsin
2014-09-16Rename functions to keep style consistentsin
2014-09-16Add comment like we do for the name and idsin
2014-09-16Add support for changing the status messagesin
2014-09-16Make writeline() more genericsin
2014-09-16Make callbacks more genericsin
2014-09-16Start using callbacks to make the main loop less uglysin
2014-09-16Name setting and printing the ID are now exposed via the fssin
We will gradually expose the other commands as well.
2014-09-16When initiating a transfer, print the nickname of the friendsin
2014-09-16Print message when transfers startsin
2014-09-16Detect and cleanup stale transferssin
2014-09-16Only monitor FIFOs for friends that are onlinesin
Side-effect: If you send a file to a friend that is offline, the write will block() until the friend comes online at which point the file transfer will begin.
2014-09-16Correctly terminate transferssin
2014-09-16Remember to free the bufferssin
2014-09-16Clean up send_friend_file()sin
2014-09-16Add Laslo Hunhold <dev@frign.de> to LICENSEsin
2014-09-16Correctly inform the user when the transfer is completesin
2014-09-16Only attempt to send a queued transfer when it is pendingsin
2014-09-16Implement file sendingsin
Initially based on a commit by FRIGN.
2014-09-15Pass -DVERSION=\"${VERSION}\" and use that when printing the ratsin
2014-09-15Rename printbanner() to printrat()sin
2014-09-15Inform the user of the help cmdsin
2014-09-15Avoid blank nicknames when printingsin
2014-09-15For now print messages on the main screen toosin
2014-09-15Rename bootstrapnode to nodesin
2014-09-15Correctly track connected state variablesin
2014-09-15Add user status callbacksin