From bcbf5b5db7a15071da9c7ae25f4a7abdcc572587 Mon Sep 17 00:00:00 2001 From: Joe Date: Thu, 11 Jan 2024 20:20:20 +0100 Subject: cool --- c_ldirs.go | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'c_ldirs.go') diff --git a/c_ldirs.go b/c_ldirs.go index 141a0b8..be1a225 100644 --- a/c_ldirs.go +++ b/c_ldirs.go @@ -79,6 +79,43 @@ func (ldirs *DirsList) add_back(node *DirsNode) { ldirs.last = last.next } +// removes a dir node from the list +func (ldirs *DirsList) del(dir *DirsNode) { + if ldirs.head == nil { + return + } + if ldirs.head == dir { + ldirs.head = ldirs.head.next + if ldirs.head == nil { + ldirs.last = nil + return + } + for ptr := ldirs.head; ptr != nil; ptr = ptr.next { + ptr.ID -= 1 + } + return + } + if ldirs.last == dir { + ptr := ldirs.head + for ptr.next != nil { + ptr = ptr.next + } + ldirs.last = ptr + ldirs.last.next = nil + return + } + ptr := ldirs.head + for ptr.next != nil && ptr.next != dir { + ptr = ptr.next + } + if ptr.next == dir { + ptr.next = ptr.next.next + } + for ptr := ptr.next; ptr != nil; ptr = ptr.next { + ptr.ID -= 1 + } +} + // return the list node with the according id func (ldirs *DirsList) sel(id int) *DirsNode { curr := ldirs.head -- cgit v1.2.3