this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

optimize

alice 4800902e 4730e722

+101 -256
+17 -6
scripts/generateAirportTzList.ts
··· 418 418 419 419 const codePool: string[] = []; 420 420 const namePool: string[] = []; 421 - const poolCodeSet = new Set<string>(); // Track codes added to pool 421 + const poolCodeSet = new Set<string>(); // Track codes/names added to pool 422 422 423 423 // Calculate final offsets and counts 424 424 for (const bucket of sortedBuckets) { ··· 444 444 } else if (name.endsWith(' Airport')) { 445 445 name = name.substring(0, name.length - ' Airport'.length); 446 446 } 447 - namePool.push(name.trim().replace(/\"/g, '\\"')); // Escape quotes for C string 447 + namePool.push(name.trim().replace(/\"/g, '\\\"')); // Escape quotes for C string 448 448 } 449 449 } 450 450 ··· 477 477 478 478 // Airport Name Pool (pointers to strings) 479 479 cContent += `// Total airport names: ${namePool.length}\n`; 480 - cContent += `static const char* airport_name_pool[] = {\n`; 480 + cContent += `static const char airport_name_pool[] =\n`; 481 481 if (namePool.length > 0) { 482 + let line = ' '; 482 483 for (const name of namePool) { 483 - cContent += ` "${name}",\n`; 484 + const literal = `"${name}\\0"`; 485 + // Break line if too long 486 + if (line.length + literal.length + 1 > 80) { 487 + cContent += `${line}\n`; 488 + line = ' ' + literal + ' '; 489 + } else { 490 + line += literal + ' '; 491 + } 492 + } 493 + if (line.trim().length > 0) { 494 + cContent += `${line.trimEnd()}\n`; 484 495 } 496 + cContent += `;\n\n`; 485 497 } else { 486 - cContent += ` // Empty pool\n`; 498 + cContent += ` "\0"; // Empty pool\n\n`; 487 499 } 488 - cContent += `};\n\n`; 489 500 490 501 // TzInfo struct definition 491 502 cContent += `typedef struct {\n`;
+69 -248
src/c/airport_tz_list.c
··· 1 1 // Auto-generated by generateAirportTzList.ts 2 - // Generated on: 2025-04-24T18:57:23.970Z 2 + // Generated on: 2025-04-24T21:53:42.004Z 3 3 // Year-specific DST data for 2025 4 4 5 5 #include <stdint.h> ··· 40 40 ; 41 41 42 42 // Total airport names: 245 43 - static const char* airport_name_pool[] = { 44 - "Pago Pago", 45 - "Niue", 46 - "Fitiuta", 47 - "Honolulu", 48 - "Kona International At Keahole", 49 - "Lihue", 50 - "Hilo", 51 - "Molokai", 52 - "Kapalua", 53 - "Lanai", 54 - "Adak", 55 - "Nuku Hiva", 56 - "Hiva Oa-Atuona", 57 - "Ua Pou", 58 - "Totegegie", 59 - "Ted Stevens Anchorage", 60 - "Los Angeles", 61 - "San Francisco", 62 - "McCarran", 63 - "Seattle Tacoma", 64 - "Vancouver", 65 - "San Diego", 66 - "Portland", 67 - "Metropolitan Oakland", 68 - "Norman Y. Mineta San Jose", 69 - "Sacramento", 70 - "Phoenix Sky Harbor", 71 - "Denver", 72 - "Salt Lake City", 73 - "Calgary", 74 - "Edmonton", 75 - "Albuquerque International Sunport", 76 - "El Paso", 77 - "Licenciado Benito Juarez", 78 - "Chicago O'Hare", 79 - "Dallas Fort Worth", 80 - "George Bush Intercontinental Houston", 81 - "Minneapolis-St Paul International/Wold-Chamberlain", 82 - "Chicago Midway", 83 - "Dallas Love Field", 84 - "Lambert St Louis", 85 - "Nashville", 86 - "Austin Bergstrom", 87 - "Mataveri", 88 - "Cancún", 89 - "José Martí", 90 - "Hartsfield Jackson Atlanta", 91 - "John F Kennedy", 92 - "Lester B. Pearson", 93 - "Charlotte Douglas", 94 - "Orlando", 95 - "Miami", 96 - "Newark Liberty", 97 - "General Edward Lawrence Logan", 98 - "Detroit Metropolitan Wayne County", 99 - "Fort Lauderdale Hollywood", 100 - "Maturín", 101 - "Marechal Rondon", 102 - "Eduardo Gomes", 103 - "Princess Juliana", 104 - "Campo Grande", 105 - "Governador Jorge Teixeira de Oliveira", 106 - "Atlas Brasil Cantanhede", 107 - "Halifax / Stanfield", 108 - "Comodoro Arturo Merino Benítez", 109 - "St. John's", 110 - "Deer Lake", 111 - "St. Anthony", 112 - "Williams Harbour", 113 - "Guarulhos - Governador André Franco Montoro", 114 - "Congonhas", 115 - "Presidente Juscelino Kubistschek", 116 - "Rio Galeão – Tom Jobim", 117 - "Jorge Newbery Airpark", 118 - "Ministro Pistarini", 119 - "Tancredo Neves", 120 - "Viracopos", 121 - "Santos Dumont", 122 - "Salgado Filho", 123 - "St Pierre", 124 - "Fernando de Noronha", 125 - "Godthaab / Nuuk", 126 - "Amílcar Cabral", 127 - "João Paulo II", 128 - "Lajes Field", 129 - "Léopold Sédar Senghor", 130 - "London Heathrow", 131 - "London Gatwick", 132 - "Dublin", 133 - "Manchester", 134 - "Lisbon Portela", 135 - "London Stansted", 136 - "London Luton", 137 - "Edinburgh", 138 - "Gran Canaria", 139 - "Birmingham", 140 - "Mohammed V", 141 - "Charles de Gaulle", 142 - "Amsterdam Airport Schiphol", 143 - "Frankfurt am Main", 144 - "Adolfo Suárez Madrid–Barajas", 145 - "Barcelona", 146 - "Munich", 147 - "Leonardo da Vinci–Fiumicino", 148 - "Zürich", 149 - "Copenhagen Kastrup", 150 - "Palma De Mallorca", 151 - "OR Tambo", 152 - "Cape Town", 153 - "Ben Gurion", 154 - "Beirut Rafic Hariri", 155 - "Chişinău", 156 - "Eleftherios Venizelos", 157 - "Helsinki Vantaa", 158 - "Henri Coandă", 159 - "Boryspil", 160 - "Heraklion International Nikos Kazantzakis", 161 - "Sofia", 162 - "Yasser Arafat", 163 - "Cairo", 164 - "Atatürk", 165 - "Sheremetyevo", 166 - "King Abdulaziz", 167 - "Sabiha Gökçen", 168 - "Domodedovo", 169 - "Antalya", 170 - "King Khaled", 171 - "Vnukovo", 172 - "Pulkovo", 173 - "Esenboğa", 174 - "Mehrabad", 175 - "Mashhad", 176 - "Imam Khomeini", 177 - "Shiraz Shahid Dastghaib", 178 - "Ahwaz", 179 - "Kish", 180 - "Esfahan Shahid Beheshti", 181 - "Tabriz", 182 - "Bandar Abbas", 183 - "Persian Gulf", 184 - "Dubai", 185 - "Abu Dhabi", 186 - "Sharjah", 187 - "Sir Seewoosagur Ramgoolam", 188 - "Tbilisi", 189 - "Kurumoch", 190 - "Roland Garros", 191 - "Al Maktoum", 192 - "Astrakhan", 193 - "Batumi", 194 - "Kabul", 195 - "Herat", 196 - "Fayzabad", 197 - "Koltsovo", 198 - "Ufa", 199 - "Roshchino", 200 - "Surgut", 201 - "Chelyabinsk Balandino", 202 - "Bolshoye Savino", 203 - "Novy Urengoy", 204 - "Orenburg Central", 205 - "Nizhnevartovsk", 206 - "Salekhard", 207 - "Indira Gandhi", 208 - "Chhatrapati Shivaji", 209 - "Kempegowda", 210 - "Netaji Subhash Chandra Bose", 211 - "Chennai", 212 - "Cochin", 213 - "Pune", 214 - "Sardar Vallabhbhai Patel", 215 - "Dabolim", 216 - "Jaipur", 217 - "Tribhuvan", 218 - "Gautam Buddha", 219 - "Biratnagar", 220 - "Tumling Tar", 221 - "Omsk Central", 222 - "Yangon", 223 - "Mandalay", 224 - "Soekarno-Hatta", 225 - "Suvarnabhumi", 226 - "Don Mueang", 227 - "Tan Son Nhat", 228 - "Noi Bai", 229 - "Juanda", 230 - "Phuket", 231 - "Kualanamu", 232 - "Da Nang", 233 - "Chiang Mai", 234 - "Beijing Capital", 235 - "Chek Lap Kok", 236 - "Shanghai Pudong", 237 - "Guangzhou Baiyun", 238 - "Singapore Changi", 239 - "Kuala Lumpur", 240 - "Chengdu Shuangliu", 241 - "Shenzhen Bao'an", 242 - "Taiwan Taoyuan", 243 - "Kunming Changshui", 244 - "Tokyo Haneda", 245 - "Incheon", 246 - "Narita", 247 - "Jeju", 248 - "Kansai", 249 - "Gimpo", 250 - "Fukuoka", 251 - "New Chitose", 252 - "Naha", 253 - "Gimhae", 254 - "Darwin", 255 - "Alice Springs", 256 - "Ayers Rock Connellan", 257 - "Adelaide", 258 - "Port Lincoln", 259 - "Mount Gambier", 260 - "Olympic Dam", 261 - "Brisbane", 262 - "Gold Coast", 263 - "Cairns", 264 - "Vladivostok", 265 - "Khabarovsk-Novy", 266 - "Townsville", 267 - "Sydney Kingsford Smith", 268 - "Melbourne", 269 - "Canberra", 270 - "Hobart", 271 - "Lord Howe Island", 272 - "Yuzhno-Sakhalinsk", 273 - "Norfolk Island", 274 - "Nadi", 275 - "Yelizovo", 276 - "Auckland", 277 - "Christchurch", 278 - "Wellington", 279 - "Queenstown", 280 - "Nelson", 281 - "Dunedin", 282 - "Hawke's Bay", 283 - "Palmerston North", 284 - "Chatham Islands-Tuuta", 285 - "Faleolo", 286 - "Fua'amotu", 287 - "Kaufana", 288 - "Cassidy", 289 - }; 43 + static const char airport_name_pool[] = 44 + "Pago Pago\0" "Niue\0" "Fitiuta\0" "Honolulu\0" 45 + "Kona International At Keahole\0" "Lihue\0" "Hilo\0" "Molokai\0" 46 + "Kapalua\0" "Lanai\0" "Adak\0" "Nuku Hiva\0" "Hiva Oa-Atuona\0" "Ua Pou\0" 47 + "Totegegie\0" "Ted Stevens Anchorage\0" "Los Angeles\0" "San Francisco\0" 48 + "McCarran\0" "Seattle Tacoma\0" "Vancouver\0" "San Diego\0" "Portland\0" 49 + "Metropolitan Oakland\0" "Norman Y. Mineta San Jose\0" "Sacramento\0" 50 + "Phoenix Sky Harbor\0" "Denver\0" "Salt Lake City\0" "Calgary\0" 51 + "Edmonton\0" "Albuquerque International Sunport\0" "El Paso\0" 52 + "Licenciado Benito Juarez\0" "Chicago O'Hare\0" "Dallas Fort Worth\0" 53 + "George Bush Intercontinental Houston\0" 54 + "Minneapolis-St Paul International/Wold-Chamberlain\0" "Chicago Midway\0" 55 + "Dallas Love Field\0" "Lambert St Louis\0" "Nashville\0" 56 + "Austin Bergstrom\0" "Mataveri\0" "Cancún\0" "José Martí\0" 57 + "Hartsfield Jackson Atlanta\0" "John F Kennedy\0" "Lester B. Pearson\0" 58 + "Charlotte Douglas\0" "Orlando\0" "Miami\0" "Newark Liberty\0" 59 + "General Edward Lawrence Logan\0" "Detroit Metropolitan Wayne County\0" 60 + "Fort Lauderdale Hollywood\0" "Maturín\0" "Marechal Rondon\0" 61 + "Eduardo Gomes\0" "Princess Juliana\0" "Campo Grande\0" 62 + "Governador Jorge Teixeira de Oliveira\0" "Atlas Brasil Cantanhede\0" 63 + "Halifax / Stanfield\0" "Comodoro Arturo Merino Benítez\0" "St. John's\0" 64 + "Deer Lake\0" "St. Anthony\0" "Williams Harbour\0" 65 + "Guarulhos - Governador André Franco Montoro\0" "Congonhas\0" 66 + "Presidente Juscelino Kubistschek\0" "Rio Galeão – Tom Jobim\0" 67 + "Jorge Newbery Airpark\0" "Ministro Pistarini\0" "Tancredo Neves\0" 68 + "Viracopos\0" "Santos Dumont\0" "Salgado Filho\0" "St Pierre\0" 69 + "Fernando de Noronha\0" "Godthaab / Nuuk\0" "Amílcar Cabral\0" 70 + "João Paulo II\0" "Lajes Field\0" "Léopold Sédar Senghor\0" 71 + "London Heathrow\0" "London Gatwick\0" "Dublin\0" "Manchester\0" 72 + "Lisbon Portela\0" "London Stansted\0" "London Luton\0" "Edinburgh\0" 73 + "Gran Canaria\0" "Birmingham\0" "Mohammed V\0" "Charles de Gaulle\0" 74 + "Amsterdam Airport Schiphol\0" "Frankfurt am Main\0" 75 + "Adolfo Suárez Madrid–Barajas\0" "Barcelona\0" "Munich\0" 76 + "Leonardo da Vinci–Fiumicino\0" "Zürich\0" "Copenhagen Kastrup\0" 77 + "Palma De Mallorca\0" "OR Tambo\0" "Cape Town\0" "Ben Gurion\0" 78 + "Beirut Rafic Hariri\0" "Chişinău\0" "Eleftherios Venizelos\0" 79 + "Helsinki Vantaa\0" "Henri Coandă\0" "Boryspil\0" 80 + "Heraklion International Nikos Kazantzakis\0" "Sofia\0" "Yasser Arafat\0" 81 + "Cairo\0" "Atatürk\0" "Sheremetyevo\0" "King Abdulaziz\0" "Sabiha Gökçen\0" 82 + "Domodedovo\0" "Antalya\0" "King Khaled\0" "Vnukovo\0" "Pulkovo\0" 83 + "Esenboğa\0" "Mehrabad\0" "Mashhad\0" "Imam Khomeini\0" 84 + "Shiraz Shahid Dastghaib\0" "Ahwaz\0" "Kish\0" "Esfahan Shahid Beheshti\0" 85 + "Tabriz\0" "Bandar Abbas\0" "Persian Gulf\0" "Dubai\0" "Abu Dhabi\0" 86 + "Sharjah\0" "Sir Seewoosagur Ramgoolam\0" "Tbilisi\0" "Kurumoch\0" 87 + "Roland Garros\0" "Al Maktoum\0" "Astrakhan\0" "Batumi\0" "Kabul\0" 88 + "Herat\0" "Fayzabad\0" "Koltsovo\0" "Ufa\0" "Roshchino\0" "Surgut\0" 89 + "Chelyabinsk Balandino\0" "Bolshoye Savino\0" "Novy Urengoy\0" 90 + "Orenburg Central\0" "Nizhnevartovsk\0" "Salekhard\0" "Indira Gandhi\0" 91 + "Chhatrapati Shivaji\0" "Kempegowda\0" "Netaji Subhash Chandra Bose\0" 92 + "Chennai\0" "Cochin\0" "Pune\0" "Sardar Vallabhbhai Patel\0" "Dabolim\0" 93 + "Jaipur\0" "Tribhuvan\0" "Gautam Buddha\0" "Biratnagar\0" "Tumling Tar\0" 94 + "Omsk Central\0" "Yangon\0" "Mandalay\0" "Soekarno-Hatta\0" 95 + "Suvarnabhumi\0" "Don Mueang\0" "Tan Son Nhat\0" "Noi Bai\0" "Juanda\0" 96 + "Phuket\0" "Kualanamu\0" "Da Nang\0" "Chiang Mai\0" "Beijing Capital\0" 97 + "Chek Lap Kok\0" "Shanghai Pudong\0" "Guangzhou Baiyun\0" 98 + "Singapore Changi\0" "Kuala Lumpur\0" "Chengdu Shuangliu\0" 99 + "Shenzhen Bao'an\0" "Taiwan Taoyuan\0" "Kunming Changshui\0" 100 + "Tokyo Haneda\0" "Incheon\0" "Narita\0" "Jeju\0" "Kansai\0" "Gimpo\0" 101 + "Fukuoka\0" "New Chitose\0" "Naha\0" "Gimhae\0" "Darwin\0" 102 + "Alice Springs\0" "Ayers Rock Connellan\0" "Adelaide\0" "Port Lincoln\0" 103 + "Mount Gambier\0" "Olympic Dam\0" "Brisbane\0" "Gold Coast\0" "Cairns\0" 104 + "Vladivostok\0" "Khabarovsk-Novy\0" "Townsville\0" 105 + "Sydney Kingsford Smith\0" "Melbourne\0" "Canberra\0" "Hobart\0" 106 + "Lord Howe Island\0" "Yuzhno-Sakhalinsk\0" "Norfolk Island\0" "Nadi\0" 107 + "Yelizovo\0" "Auckland\0" "Christchurch\0" "Wellington\0" "Queenstown\0" 108 + "Nelson\0" "Dunedin\0" "Hawke's Bay\0" "Palmerston North\0" 109 + "Chatham Islands-Tuuta\0" "Faleolo\0" "Fua'amotu\0" "Kaufana\0" "Cassidy\0" 110 + ; 290 111 291 112 typedef struct { 292 113 float std_offset_hours;
+15 -2
src/c/clock_closest_airport_noon.h
··· 53 53 extern "C" { 54 54 #endif 55 55 56 + // Helper to fetch the Nth null-terminated name from the flat pool 57 + static inline const char* _airport_flat_name(const char* pool, int nameIndex) { 58 + const char* p = pool; 59 + while (nameIndex-- > 0) { 60 + while (*p) p++; // skip current string 61 + p++; // move past '\0' 62 + } 63 + return p; 64 + } 65 + 56 66 // Public API --------------------------------------------------------------- 57 67 58 68 static inline TextLayer* clock_closest_airport_noon_code_init(GRect bounds, ··· 129 139 int ni = (cnt == 1) ? 0 : (rand() % cnt); 130 140 memcpy((void *)s_selected_code, CODE_POOL + 3 * (tz->name_offset + ni), 3); 131 141 s_selected_code[3] = '\0'; // Ensure null termination 132 - s_selected_name = NAME_POOL[tz->name_offset + ni]; 142 + int nameIndex = tz->name_offset + ni; 143 + s_selected_name = _airport_flat_name(NAME_POOL, nameIndex); 133 144 } 134 145 s_last_re_eval_time = current_utc_t; 135 146 } ··· 204 215 } 205 216 #endif 206 217 207 - #endif /* CLOCK_CLOSEST_AIRPORT_NOON_H */ 218 + #endif /* CLOCK_CLOSEST_AIRPORT_NOON_H */ 219 + 220 + // Note: using airport_name_offsets[] directly for name lookup