| Commit message (Collapse) | Author | Age |
| |
|
|
|
|
|
|
|
|
| |
The webapp is now a constantly updating clock! I accomplished this amazing
feat using "long polling", with some jquery and a little custom java
script.
There are more modern techniques, but this one works everywhere.
|
| |
|
| |
|
|
|
|
| |
Useful for testing..
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Broke hamlet out into standalone files.
I don't like the favicon display; it should be served from /favicon.ico,
but I could only get the static site to serve /static/favicon.ico, so
I had to use a <link rel=icon> to pull it in. I looked at
Yesod.Default.Handlers.getFaviconR, but it doesn't seem to embed
the favicon into the binary?
|
|
|
|
| |
Also, starts the assistant if it wasn't already running.
|
| |
|
|
|
|
|
| |
Also broke out some helper functions around constructing remotes,
to be used later.
|
| |
|
|
|
|
|
|
| |
There's a minor performance overhead to doing this, but this way I don't
have to worry about a situation where statfs might block for a long time.
For example, when it's on a network filesystem.
|
|
|
|
|
| |
This avoids blocking all threads when calling waitchange_kqueue,
which blocks.
|
|
|
|
|
| |
This way, if a mount point was already mounted, but something else
gets mounted there, it'll be seen as a new mount.
|
| |
|
|
|
|
|
|
|
| |
While this seems to work fine when used in a simple program,
when I load it in ghci, it segfaults about half the time. Don't know why,
and seems ghci specific, but if I get reports of crashes, I'll need to look
into that.
|
| |
|
|
|
|
|
| |
This is an unholy mashup, but it just might work. It works on Linux,
that's all I've tested. :)
|
|
|
|
|
|
|
|
|
| |
Converted from using c2hs to using hsc2hs, just because other code
in git-annex uses hsc2hs.
Various cleanups.
This code is LGPLed, so I had to include that licence.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Make Utility.Process wrap the parts of System.Process that I use,
and add debug logging to them.
Also wrote some higher-level code that allows running an action
with handles to a processes stdin or stdout (or both), and checking
its exit status, all in a single function call.
As a bonus, the debug logging now indicates whether the process
is being run to read from it, feed it data, chat with it (writing and
reading), or just call it for its side effect.
|
|
|
|
| |
That can make the threaded runtime stall.. But it can use threads now!
|
| |
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Test suite now passes with -threaded!
I traced back all the hangs with -threaded to System.Cmd.Utils. It seems
it's just crappy/unsafe/outdated, and should not be used. System.Process
seems to be the cool new thing, so converted all the code to use it
instead.
In the process, --debug stopped printing commands it runs. I may try to
bring that back later.
Note that even SafeSystem was switched to use System.Process. Since that
was a modified version of code from System.Cmd.Utils, it needed to be
converted too. I also got rid of nearly all calls to forkProcess,
and all calls to executeFile, which I'm also doubtful about working
well with -threaded.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| | |
Don't fall over symlinks, and avoid crashing if the file goes away.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This is necessary to generate events when a file is deleted and immediately
replaced. Otherwise, the cache will have the old file, and so no event
would be generated.
Use of getFileStatus is suboptimal, it would be faster to use
the inode returned by readdir -- but getDirectoryContents does not expose
it, so I'd have to copy and modify a lot of low-level code.
|
| | |
|
|\| |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| | |
that doesn't exist, or cannot be read
The problem is its use of unsafeInterleaveIO, which causes its IO code
to run when the thunk is forced, outside any exception trapping the caller
may do.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Not yet tested and places git-annex-shell is run need to be modified to
pass the new field settings.
Note that rsyncServerSend was changed to fork, rather than directly exec
rsync, because it needs to keep the transfer lock held, and clean up the
transfer log when done.
|
| | |
|
|\| |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The reason the DirWatcher had to wait for program termination was because
it used withINotify, so when it finished, its watcher threads were killed.
But since I have two DirWatcher threads now, that was not good, and could
perhaps explain the MVar problem I saw yesterday. In any case, fixed this
part of the code by making the DirWatcher return a handle that can be used
to stop it, and now the main Assistant thread is the only one calling
waitForTermination.
|
| |
| |
| |
| |
| |
| |
| | |
SampleMVar won't work; between getting the current value and changing
it, another thread could made a change, which would get lost.
TMVar works well; this update situation is handled by atomic transactions.
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| | |
Wow! I can create a file in repo a, and it instantly* shows up in repo b!
* under 1 second anyway
|