Ethernet.begin() blocks for too long/is there a way to check cable connection?

I'm building a clock. I want to set the clock by plugging an ethernet cable into the clock. Most of the time the clock would not be plugged into the internet.

I have an arudino board and an ethernet shield that can successfully connect to a time server and read the time (See the UdpNtpClient example file under Examples > Ethernet).

The problem is that to configure the ethernet shield, the Ethernet.begin() call blocks for 60sec if the shield is not connected to the internet. I would like the clock to tell the time and periodically check to see if it has an ethernet cable plugged in, and if so, make any corrections to the time. Most of the time this check is going to have a negative result, however, so I can't have the clock freeze for 60sec each time.

Does anyone know if it is possible to detect if the cable is connected in a quicker way than the Ethernet.begin() function? Is it possible to write a "multithreading" solution, where Ethernet.begin() is non-blocking?

How about setting the time only in setup() and pushing the Reset button when you plug in the ethernet cable?

You can also use a GPS receiver for setting the clock (no Ethernet necessary).

Thanks! From a usability perspective, I want the user to do as little work as possible when setting the clock, so I don't want any button pressing. In that regard, the GPS idea is a perfect solution!

For the record, it looks like the DHCP configuration is what causes the blocking in the Ethernet library. Someone on stackoverflow pointed me to a non-blocking DHCP fork:

http://gkaindl.com/software/arduino-ethernet/dhcp

And the stackoverflow thread: