Warring generals in Sudan have agreed to extend by five days a humanitarian ceasefire they repeatedly violated and which failed to deliver promised aid corridors.