Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Changes In Branch doc-symlink Excluding Merge-Ins
This is equivalent to a diff from 50844e5c6b to eb4dda4820
2017-10-16
| ||
13:54 | Improvements to automatic hyperlink enabling and robot exclusion. check-in: f014e15660 user: drh tags: trunk | |
2017-10-14
| ||
23:20 | Update /dir to support readme and readme.* files being a symlink to the actual document. Symlinks to symlinks are not supported in this instance. The document type is determined by the link target name. Leaf check-in: eb4dda4820 user: andygoth tags: doc-symlink | |
19:28 | Merge trunk check-in: 057645a938 user: andygoth tags: enhanced-symlink | |
2017-10-12
| ||
13:37 | Rewrote the autoreconfigure explanation comment. It was confusing and contained errors. check-in: 50844e5c6b user: wyoung tags: trunk | |
2017-10-11
| ||
19:56 | Removed the GNU make conditional around the new autoreconfigure dependency rule in the top-level Makefile.in. Apparently we have users using some other make, perhaps BSD make. Since the conditional only prevents autoreconfigure in the "make clean" case, where it is a minor annoyance, it's not important to work out how to retain this in a non-GNU make world. check-in: 454e119398 user: wyoung tags: trunk | |
Changes to src/browse.c.
︙ | ︙ | |||
210 211 212 213 214 215 216 | ** of all files and subdirectories in the zD[] directory. ** ** Subdirectory names begin with "/". This causes them to sort ** first and it also gives us an easy way to distinguish files ** from directories in the loop that follows. */ db_multi_exec( | | | > | | | 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 | ** of all files and subdirectories in the zD[] directory. ** ** Subdirectory names begin with "/". This causes them to sort ** first and it also gives us an easy way to distinguish files ** from directories in the loop that follows. */ db_multi_exec( "CREATE TEMP TABLE localfiles(x UNIQUE NOT NULL, u, l);" ); if( zCI ){ Stmt ins; ManifestFile *pFile; ManifestFile *pPrev = 0; int nPrev = 0; int c; db_prepare(&ins, "INSERT OR IGNORE INTO localfiles VALUES(pathelement(:x,0), :u, :l)" ); manifest_file_rewind(pM); while( (pFile = manifest_file_next(pM,0))!=0 ){ if( nD>0 && (fossil_strncmp(pFile->zName, zD, nD-1)!=0 || pFile->zName[nD-1]!='/') ){ continue; } if( pPrev && fossil_strncmp(&pFile->zName[nD],&pPrev->zName[nD],nPrev)==0 && (pFile->zName[nD+nPrev]==0 || pFile->zName[nD+nPrev]=='/') ){ continue; } db_bind_text(&ins, ":x", &pFile->zName[nD]); db_bind_text(&ins, ":u", pFile->zUuid); db_bind_int(&ins, ":l", pFile->zPerm && strchr(pFile->zPerm, 'l')!=0); db_step(&ins); db_reset(&ins); pPrev = pFile; for(nPrev=0; (c=pPrev->zName[nD+nPrev]) && c!='/'; nPrev++){} if( c=='/' ) nPrev++; } db_finalize(&ins); }else if( zD ){ db_multi_exec( "INSERT OR IGNORE INTO localfiles" " SELECT pathelement(name,%d,0), NULL FROM filename" " WHERE name GLOB '%q/*'", nD, zD ); }else{ db_multi_exec( "INSERT OR IGNORE INTO localfiles" " SELECT pathelement(name,0,0), NULL FROM filename" ); } /* Generate a multi-column table listing the contents of zD[] ** directory. */ mxLen = db_int(12, "SELECT max(length(x)) FROM localfiles /*scan*/"); |
︙ | ︙ | |||
302 303 304 305 306 307 308 | manifest_destroy(pM); @ </ul></td></tr></table> /* If the directory contains a readme file, then display its content below ** the list of files */ db_prepare(&q, | | > < | | | | | | | | | | | | | | | | | | | | > > > > > > > > > > > > > > > > > > > > > > > > > > | 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 | manifest_destroy(pM); @ </ul></td></tr></table> /* If the directory contains a readme file, then display its content below ** the list of files */ db_prepare(&q, "SELECT x, u, l FROM localfiles" " WHERE x COLLATE nocase IN" " ('readme','readme.txt','readme.md','readme.wiki','readme.markdown'," " 'readme.html') ORDER BY x LIMIT 1;" ); if( db_step(&q)==SQLITE_ROW ){ const char *zName = db_column_text(&q,0); const char *zUuid = db_column_text(&q,1); int isLink = db_column_int(&q,2); if( zUuid ){ rid = fast_uuid_to_rid(zUuid); }else if( zD ){ rid = db_int(0, "SELECT fid FROM filename, mlink, event" " WHERE name='%q/%q'" " AND mlink.fnid=filename.fnid" " AND event.objid=mlink.mid" " ORDER BY event.mtime DESC LIMIT 1", zD, zName ); }else{ rid = db_int(0, "SELECT fid FROM filename, mlink, event" " WHERE name='%q'" " AND mlink.fnid=filename.fnid" " AND event.objid=mlink.mid" " ORDER BY event.mtime DESC LIMIT 1", zName ); } /* If the README file is a symlink, dereference it to find the actual * document. To keep things simple and to avoid infinite loops, do not * attempt more than one level of dereferencing. */ if( rid && isLink ){ char *zDir, *zNewName; Blob content; content_get(rid, &content); zDir = file_dirname(zName); if( zDir ){ zNewName = mprintf("%s/%s", zDir, blob_buffer(&content)); }else{ zNewName = blob_buffer(&content); } file_simplify_name(zNewName, -1, 0); rid = db_int(0, "SELECT fid FROM filename, mlink, event" " WHERE name='%q'" " AND mlink.fnid=filename.fnid" " AND event.objid=mlink.mid" " ORDER BY event.mtime DESC LIMIT 1", zNewName ); zName = zNewName; zUuid = 0; } if( rid ){ @ <hr> if( sqlite3_strlike("readme.html", zName, 0)==0 ){ if( zUuid==0 ){ zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", rid); } @ <iframe src="%R/raw/%s(zUuid)" |
︙ | ︙ |
Changes to www/changes.wiki.
︙ | ︙ | |||
28 29 30 31 32 33 34 35 36 37 38 39 40 41 | * Correct the [/help?cmd=/doc|/doc] page to support read-only repositories. * Correct [/help?cmd=/zip|/zip], [/help?cmd=/tarball|/tarball], [/help?cmd=zip|zip], and [/help?cmd=tarball|tarball] pages and commands to honor the versioned manifest setting when outside of an open checkout directory. * The admin-log and access-log settings are now on by default for new repositories. * Update the built-in SQLite to version 3.20.1. <a name='v2_3'></a> <h2>Changes for Version 2.3 (2017-07-21)</h2> * Update the built-in SQLite to version 3.20.0 (beta). * Update internal Unicode character tables, used in regular expression | > > > | 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | * Correct the [/help?cmd=/doc|/doc] page to support read-only repositories. * Correct [/help?cmd=/zip|/zip], [/help?cmd=/tarball|/tarball], [/help?cmd=zip|zip], and [/help?cmd=tarball|tarball] pages and commands to honor the versioned manifest setting when outside of an open checkout directory. * The admin-log and access-log settings are now on by default for new repositories. * Update /dir to support readme and readme.* files being a symlink to the actual document. Symlinks to symlinks are not supported in this instance. The document type is determined by the link target name. * Update the built-in SQLite to version 3.20.1. <a name='v2_3'></a> <h2>Changes for Version 2.3 (2017-07-21)</h2> * Update the built-in SQLite to version 3.20.0 (beta). * Update internal Unicode character tables, used in regular expression |
︙ | ︙ |