POSIX time
the SI seconds since 1970-01-01 00:00:00 UTC minus the number of leap seconds that occurred since then
TAI-10
the SI seconds since 1970-01-01 00:00:00 UTC (i.e., since 1969-12-31 23:59:50 TAI)

To convert between POSIX time and TAI-10, add the number of leap seconds.

Wall time is always UTC. While TAI timestamps exist, apparently, nobody uses them.

To break POSIX time down, you don’t need to know the leap seconds. The number does not contain the leap seconds and the function assumes no leap seconds.

Still, breaking down a TAI-10 number using libc does not even give you a TAI time stamp: It gives you a TAI time stamp that is offset by 10 seconds. Breaking down TAI-10 zero gives you 1970-01-01 00:00:00 instead of 1969-12-31 23:59:50.

To break down TAI-10 into a UTC time stamp, you need to know about the leap seconds. The naïve solution is to just subtract the leap seconds; that will break only if the current time is a leap second—it won’t give you a xx:xx:60 time stamp.