Compare commits
	
		
			736 Commits
		
	
	
		
			LIBGTOP_2_
			...
			LIBGTOP_2_
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | bec5e10bb1 | ||
|  | 7bd1293665 | ||
|  | 5edf277435 | ||
|  | 3f307e8e30 | ||
|  | b375457834 | ||
|  | 79e8b914ed | ||
|  | faacbd7f8b | ||
|  | dde57bee91 | ||
|  | 08798f05f5 | ||
|  | 486e6b0260 | ||
|  | 1c96e35cc0 | ||
|  | 83a3d5f76d | ||
|  | 80aeb305c2 | ||
|  | 4c8ae9e25c | ||
|  | bae16b467f | ||
|  | 5e28a55218 | ||
|  | 4d0bca118a | ||
|  | c3011b646c | ||
|  | b94a36c719 | ||
|  | 7aaa4454ab | ||
|  | 6572ee1baf | ||
|  | c95d39dde7 | ||
|  | a32503df9b | ||
|  | d31e33d4bf | ||
|  | 09becf3b7d | ||
|  | 6e9589702f | ||
|  | ab7f98d2ff | ||
|  | 75b2832076 | ||
|  | 142a323364 | ||
|  | 3a4a550e06 | ||
|  | 2fc6e07c0f | ||
|  | 2d4db7f03f | ||
|  | 9b87f4586e | ||
|  | 9ff3af644c | ||
|  | ffb5f13711 | ||
|  | 6dbc1e0d4a | ||
|  | c660c08b6f | ||
|  | 2ce38167e1 | ||
|  | 7cad52aaa0 | ||
|  | 61f8cb7ff2 | ||
|  | f05ee369d5 | ||
|  | c3bfcf38a8 | ||
|  | 1552efa493 | ||
|  | 9bb1b80751 | ||
|  | 40140ad487 | ||
|  | 47e518d612 | ||
|  | 4e4cf10334 | ||
|  | b02653eef9 | ||
|  | bfb2d1b25c | ||
|  | 1042379d6d | ||
|  | 240d07da28 | ||
|  | fb2247a58b | ||
|  | c04ee88f00 | ||
|  | 1b44968284 | ||
|  | 47bad7fac1 | ||
|  | 7691d85225 | ||
|  | d0863b7406 | ||
|  | 7afa0e0be7 | ||
|  | 0c260bfef1 | ||
|  | 312baf1bc2 | ||
|  | 1dc0883059 | ||
|  | 222b93c33f | ||
|  | db93479a51 | ||
|  | 236d2b18e7 | ||
|  | 08956770d2 | ||
|  | 7a7c6baf55 | ||
|  | 5bfb085021 | ||
|  | dfb9d6f967 | ||
|  | 530cc00ae7 | ||
|  | a3557112a7 | ||
|  | 3f34aafc6e | ||
|  | d6630b9f7a | ||
|  | 3b7c109916 | ||
|  | c5fcc9aad6 | ||
|  | f4fc67f85c | ||
|  | bcc4ec968e | ||
|  | 543b3b9160 | ||
|  | aac46b6daf | ||
|  | 407514e4d7 | ||
|  | 1491ccc594 | ||
|  | 14b462fdc5 | ||
|  | 1c64d5c704 | ||
|  | 21ecc84514 | ||
|  | b7acfa6441 | ||
|  | de0391e6a4 | ||
|  | 56e7068a8b | ||
|  | ed9140570e | ||
|  | ae5ecfe538 | ||
|  | fdd8cb8d27 | ||
|  | 2c986b988f | ||
|  | 46cf060788 | ||
|  | 6ded77b938 | ||
|  | b730035db5 | ||
|  | 38755e23a3 | ||
|  | 94a24147c7 | ||
|  | 5e08479a71 | ||
|  | bb24644744 | ||
|  | eb8fd1d1be | ||
|  | f349d3a624 | ||
|  | a0b236f4f7 | ||
|  | e5e1729baf | ||
|  | b035190e66 | ||
|  | 427504e7ac | ||
|  | 33c49d7c14 | ||
|  | c24b7f3bc4 | ||
|  | e76a450779 | ||
|  | c0fc0f4cb4 | ||
|  | 5c597901ad | ||
|  | d3145d1b8b | ||
|  | 1ac0f147b7 | ||
|  | fdb4a824fc | ||
|  | 2449e92804 | ||
|  | 7846ac218d | ||
|  | 5b34c23069 | ||
|  | b6ee365761 | ||
|  | e4f5543f9d | ||
|  | a7f8debaa2 | ||
|  | 34e8918003 | ||
|  | 478be2d170 | ||
|  | 8a78a93e0c | ||
|  | 622eb0ea5b | ||
|  | 455118131e | ||
|  | 74ab42d100 | ||
|  | d294298c7e | ||
|  | 4befe086c4 | ||
|  | 98930be564 | ||
|  | 16b81f0d91 | ||
|  | dfd678599f | ||
|  | 6e4f80b8e2 | ||
|  | f704c4becf | ||
|  | 9ab1889a3f | ||
|  | 201e78d00a | ||
|  | d8cb698ae4 | ||
|  | 876b2725c0 | ||
|  | c06a084fcf | ||
|  | cee38c53bc | ||
|  | 81b009733e | ||
|  | 035b387463 | ||
|  | 158dec2b2a | ||
|  | 752d5b47d2 | ||
|  | c15ff3f342 | ||
|  | 7a7e7d1bc3 | ||
|  | 6511ad348b | ||
|  | 5b1eb2290a | ||
|  | 00aed22f17 | ||
|  | 15c1ad1bd9 | ||
|  | e1d552d9f7 | ||
|  | 60749e0bef | ||
|  | bd01a45455 | ||
|  | 54529c2425 | ||
|  | cf62a380bf | ||
|  | ab2a4e6e6a | ||
|  | 7a9428a0e5 | ||
|  | da80f53deb | ||
|  | ae15c4159c | ||
|  | eaee97b2bf | ||
|  | 94882bbc60 | ||
|  | 1e02e69b4a | ||
|  | 8277cc4d67 | ||
|  | 29858d29d8 | ||
|  | 984baf22f2 | ||
|  | cdd3862061 | ||
|  | c7cec23cf4 | ||
|  | 55b6e2e082 | ||
|  | 7d481fc8e9 | ||
|  | 50a02de454 | ||
|  | 1fcdf1af86 | ||
|  | c62a74fb5a | ||
|  | 608ac42afe | ||
|  | 99a3b1fe82 | ||
|  | ec00e62a54 | ||
|  | 29060eb6ce | ||
|  | 5301e8a86a | ||
|  | dc103ad41d | ||
|  | de91c11f87 | ||
|  | b6091762ac | ||
|  | 4719557dae | ||
|  | f4a05d8fc9 | ||
|  | 0ff66c2eaa | ||
|  | a40a438ec8 | ||
|  | 718cd38098 | ||
|  | 6b88dcd4aa | ||
|  | 29b428608d | ||
|  | e487fc30f4 | ||
|  | 578e5a5194 | ||
|  | fb08ec7144 | ||
|  | a51ffb6b73 | ||
|  | 0ecdde94c2 | ||
|  | 969260c9a9 | ||
|  | fe00191113 | ||
|  | 60f0ea7dc2 | ||
|  | d6c8167076 | ||
|  | 26b2aaa2db | ||
|  | 0b45f63e61 | ||
|  | a790130414 | ||
|  | f36d5e5370 | ||
|  | 5dbfe42493 | ||
|  | 76f1fb641c | ||
|  | 7b30b1ec86 | ||
|  | 9e2a8f7db8 | ||
|  | d6a6d70c75 | ||
|  | da16460aad | ||
|  | 444ede9949 | ||
|  | b25b0cf4d4 | ||
|  | f282240c0c | ||
|  | 8d6e26a8d6 | ||
|  | 62af029665 | ||
|  | e43f1a64c5 | ||
|  | f92c264826 | ||
|  | 350e4e799d | ||
|  | 6c6d8e006e | ||
|  | df3901571d | ||
|  | a4db88252e | ||
|  | 48440ac59b | ||
|  | c3a55796c2 | ||
|  | 33a659ab06 | ||
|  | 5e8644d736 | ||
|  | 14e7219160 | ||
|  | 5f0246b07d | ||
|  | fa20de8904 | ||
|  | 00d9dd7065 | ||
|  | 0a3a0c1a34 | ||
|  | a9ed25e7fc | ||
|  | e577aa3d08 | ||
|  | 8bcbf2f86c | ||
|  | 1e9cb3ea2a | ||
|  | 7e24f71432 | ||
|  | 4dad0e5b8c | ||
|  | 9dc214b3e7 | ||
|  | 7700a6525e | ||
|  | 28150c48f7 | ||
|  | 1f6916b5d0 | ||
|  | 36c36b9afb | ||
|  | 6402efe196 | ||
|  | 00a32c887c | ||
|  | c92bf0f9a9 | ||
|  | 44027f6bd2 | ||
|  | 3fec7a0946 | ||
|  | 47d4322965 | ||
|  | 7ae71b3d8f | ||
|  | a73800ae2d | ||
|  | b124998639 | ||
|  | 238d03677a | ||
|  | 0f3babc8e9 | ||
|  | 55ff827b50 | ||
|  | 0daf65ef73 | ||
|  | 2eab7cfc48 | ||
|  | a691993a86 | ||
|  | d3e83afb0a | ||
|  | 129e4bc0ac | ||
|  | faec393b8d | ||
|  | a7d39be2b5 | ||
|  | 8892637796 | ||
|  | 00a9f98ee0 | ||
|  | 4b8a9ece16 | ||
|  | fc8645245a | ||
|  | 2d4553adf2 | ||
|  | 5f02295a63 | ||
|  | 8b1dd440ee | ||
|  | 77a1a6a43d | ||
|  | e9c8125828 | ||
|  | 3212af2fb4 | ||
|  | 52dbe1469d | ||
|  | 837ee6bcc6 | ||
|  | 8a85be8f00 | ||
|  | 3455d025a2 | ||
|  | d2f4502e74 | ||
|  | 2144fab671 | ||
|  | e8c90833e8 | ||
|  | d567c86818 | ||
|  | 931ba0fa8d | ||
|  | 8da7cfd032 | ||
|  | 3fa1063b74 | ||
|  | e2d5319441 | ||
|  | 85a7719f39 | ||
|  | 490a05d01c | ||
|  | b54197c2e1 | ||
|  | 86dbeab484 | ||
|  | 15da337d8a | ||
|  | 992e064952 | ||
|  | 26ff5dbd79 | ||
|  | 473ecd6b3a | ||
|  | e5b75b86fc | ||
|  | d826c3e48c | ||
|  | f10223b8eb | ||
|  | 7e28d2d5dc | ||
|  | d8aa36d637 | ||
|  | 9deecf345e | ||
|  | dd17bc8f92 | ||
|  | f11195b104 | ||
|  | 74f688c5d1 | ||
|  | 65b08749cf | ||
|  | f7b69ebfae | ||
|  | 371371b633 | ||
|  | d423559605 | ||
|  | f3d309441a | ||
|  | fabb12370f | ||
|  | 5af2aab0bf | ||
|  | dd8c31ebda | ||
|  | 4d402ecc14 | ||
|  | b660c7a0f7 | ||
|  | 20c306fc6d | ||
|  | 2a86a5de49 | ||
|  | 7ba17b2bee | ||
|  | 31067e703d | ||
|  | 12e32ffc24 | ||
|  | b4122165eb | ||
|  | c17f8f2421 | ||
|  | e2e5c3a1cc | ||
|  | 8d532c6298 | ||
|  | 50f0929ae8 | ||
|  | 62c59f6087 | ||
|  | f0aab5a724 | ||
|  | 27bf526b85 | ||
|  | bb15be7198 | ||
|  | fe86288e76 | ||
|  | fc4f288ce1 | ||
|  | 7e20f2f5f2 | ||
|  | 720cb52cf3 | ||
|  | d74c329404 | ||
|  | b8fec13607 | ||
|  | 8b8e1de19a | ||
|  | 38d6f5ad0c | ||
|  | 4e42a2aa17 | ||
|  | 8491b51264 | ||
|  | c164df664d | ||
|  | fa592c3a94 | ||
|  | cb96ce0ad2 | ||
|  | 938a444edf | ||
|  | 995b506920 | ||
|  | ba466fe572 | ||
|  | c2e40852b6 | ||
|  | a1c574c502 | ||
|  | 9b8fd192d0 | ||
|  | c37460ad3d | ||
|  | d1e708b2cb | ||
|  | 8745316574 | ||
|  | ec5b8790ec | ||
|  | d9105dfe8a | ||
|  | 386f66d7e2 | ||
|  | fa5d2af7ea | ||
|  | e0d9f28674 | ||
|  | 6fe80f02ce | ||
|  | cdfee65492 | ||
|  | 44016ac371 | ||
|  | 58fa4a5955 | ||
|  | cd9c5b7967 | ||
|  | 141c863f54 | ||
|  | 24743243a8 | ||
|  | c2848e73af | ||
|  | 57d102425f | ||
|  | 68a40b5cba | ||
|  | 75ed7287d1 | ||
|  | 8797d18587 | ||
|  | a567f1a8d1 | ||
|  | 945ec9b0b1 | ||
|  | adc575dcdf | ||
|  | e593861d7f | ||
|  | 36c0941dda | ||
|  | f1a6e1ead8 | ||
|  | d7f088bef0 | ||
|  | f489ea871d | ||
|  | 7ae08dcf4f | ||
|  | de90df6a63 | ||
|  | addb3101f2 | ||
|  | e162a06a1a | ||
|  | b9abc7c3ef | ||
|  | c76bf0bfab | ||
|  | e7b42a66b1 | ||
|  | bbb539ef56 | ||
|  | dbb5f9b636 | ||
|  | 1979cb8104 | ||
|  | 91e94f9c0d | ||
|  | 42cbc7cf0c | ||
|  | 595553ae0b | ||
|  | e03b665dd1 | ||
|  | d0441219cb | ||
|  | ac0cce9d6f | ||
|  | 1ad3a69d8f | ||
|  | d86a386ad8 | ||
|  | d66768ac55 | ||
|  | 567ceac52f | ||
|  | 47a0ef64d8 | ||
|  | 5f649a7613 | ||
|  | d4b712db86 | ||
|  | 339e1f4557 | ||
|  | da42214e86 | ||
|  | c5ebf9c12e | ||
|  | 6b201a78e0 | ||
|  | d2d8d38db4 | ||
|  | 0dee417e1d | ||
|  | a0056665ae | ||
|  | 9b245d8113 | ||
|  | d098b19d4d | ||
|  | 3aaa326bab | ||
|  | 1a25c3ade9 | ||
|  | 881c2a2086 | ||
|  | a33f4df47e | ||
|  | 4748c6c4d7 | ||
|  | 18af9297ea | ||
|  | c138d87c30 | ||
|  | 709c5378f8 | ||
|  | 8e9a0fbe99 | ||
|  | 117af5f59b | ||
|  | 4dccb636e2 | ||
|  | c40788c5b2 | ||
|  | ca27a66593 | ||
|  | 713a076df3 | ||
|  | abaa37c51f | ||
|  | 4a2fb0a871 | ||
|  | 5ddf25c66a | ||
|  | ff9f90c7e6 | ||
|  | d48d48cafb | ||
|  | 2bb9bc624d | ||
|  | 069eb707f0 | ||
|  | c1cae4e9ba | ||
|  | f5efccc8d6 | ||
|  | f6e4fefd66 | ||
|  | 66bab0ec49 | ||
|  | 2b501953ce | ||
|  | 150d9c9961 | ||
|  | e5b62ecc0b | ||
|  | b621d3cf1c | ||
|  | 9abff2143d | ||
|  | 5d224583a1 | ||
|  | fdc5890b09 | ||
|  | f850409d45 | ||
|  | d58748ac66 | ||
|  | 4a01752467 | ||
|  | 53f9d03e30 | ||
|  | 776b6965fb | ||
|  | aeeef43f45 | ||
|  | b60b7fd201 | ||
|  | f918792bb6 | ||
|  | abb3ba2c6a | ||
|  | 566e05bb33 | ||
|  | 6380440c00 | ||
|  | f8e6fb5674 | ||
|  | ac83dcc3b3 | ||
|  | b746f488b0 | ||
|  | e5a7a5b0e5 | ||
|  | f8aae8f544 | ||
|  | 3f8ad111b2 | ||
|  | 81176f8181 | ||
|  | cdc8e43a79 | ||
|  | ae69444b3b | ||
|  | 28257e906b | ||
|  | 7a9bb6e43d | ||
|  | 507f171b63 | ||
|  | 1dadfb6d15 | ||
|  | 2dc529b19f | ||
|  | a5dd7e9063 | ||
|  | eae892c9b1 | ||
|  | 71e81ccad3 | ||
|  | eeaa766456 | ||
|  | 17627bab9f | ||
|  | 7327906fde | ||
|  | 3c3dfcd77d | ||
|  | 0adc3bd9ab | ||
|  | 0c3e5cd755 | ||
|  | 34714be205 | ||
|  | 77cf90cfb0 | ||
|  | 359f5511d7 | ||
|  | 9043e29b18 | ||
|  | d59b8e5220 | ||
|  | ebbeb1a058 | ||
|  | afeb4d50a5 | ||
|  | 7fb4f43469 | ||
|  | ca0cdbae5a | ||
|  | 879b173ae4 | ||
|  | 58b341ceec | ||
|  | 98981183d8 | ||
|  | 2747d6bd2a | ||
|  | e76df47af0 | ||
|  | 04fbf58c18 | ||
|  | 10dcb079f7 | ||
|  | 8da7856780 | ||
|  | 78a6bcd553 | ||
|  | 66dd76be8f | ||
|  | 2174194bbd | ||
|  | d58d11fa29 | ||
|  | 20bc40ac18 | ||
|  | 7881e4212f | ||
|  | aaca4e7cd6 | ||
|  | 3250583253 | ||
|  | be4c952542 | ||
|  | 5656ad7f6c | ||
|  | ed3ab3d31d | ||
|  | 7c0f91b7f5 | ||
|  | 8619b3a79b | ||
|  | f71e60619d | ||
|  | 3274a72cda | ||
|  | c285171500 | ||
|  | 16156b8e27 | ||
|  | 56f34dd385 | ||
|  | 4d910a33fc | ||
|  | e0ec7f5c67 | ||
|  | 886896137c | ||
|  | e0a91cb479 | ||
|  | bc51f8c734 | ||
|  | a396e42fa8 | ||
|  | 009c491b9b | ||
|  | 9667d88e60 | ||
|  | de68843eda | ||
|  | cb52909ded | ||
|  | 52c9bb06c7 | ||
|  | 2957ec5b57 | ||
|  | f384aae3a4 | ||
|  | 3a3899fda1 | ||
|  | 9cba48fbc9 | ||
|  | 86fbcede24 | ||
|  | 6e7ba4a9ca | ||
|  | 8f02d15fb9 | ||
|  | cecae08c13 | ||
|  | 9152479981 | ||
|  | 2814206ffa | ||
|  | a5c839da3a | ||
|  | e3c3db72e2 | ||
|  | 1318d89456 | ||
|  | 68f97794bd | ||
|  | 9bd351abae | ||
|  | 60a6d0876e | ||
|  | 6b11b4b581 | ||
|  | 58cfb44e52 | ||
|  | df3fb1c6fa | ||
|  | 71bda8b99d | ||
|  | 331e128116 | ||
|  | 69de36e70f | ||
|  | b9cbea40e7 | ||
|  | 7654d547d7 | ||
|  | 995e9ffd47 | ||
|  | 11e6109a4a | ||
|  | 9e79025aef | ||
|  | c1ea6cd689 | ||
|  | 4322ef4b37 | ||
|  | e56d9e3fb0 | ||
|  | 833170d18c | ||
|  | 9ef8c5739b | ||
|  | b8cdd9e090 | ||
|  | cad4a8da0d | ||
|  | 432adade05 | ||
|  | e9baa3543e | ||
|  | d5c8af57f3 | ||
|  | deeadb6648 | ||
|  | f8f0ee6882 | ||
|  | 76be244662 | ||
|  | d97a151695 | ||
|  | c9dfc76155 | ||
|  | 506023c898 | ||
|  | 0e9245ba28 | ||
|  | 091811a4d6 | ||
|  | 18f4bccb37 | ||
|  | 37af4964cc | ||
|  | f248d99d7a | ||
|  | ca80d88a74 | ||
|  | 56765d966f | ||
|  | d169afcafa | ||
|  | 1f4b738639 | ||
|  | 981668a56b | ||
|  | b55257d0d3 | ||
|  | ae6f746cf2 | ||
|  | 68e7b7a1d4 | ||
|  | 7b7071cf6d | ||
|  | b1e908e6b6 | ||
|  | f91050a7c7 | ||
|  | e3f9aa526b | ||
|  | 7db0c756d6 | ||
|  | c1bd844673 | ||
|  | 914354adb2 | ||
|  | 2ac4fb92c2 | ||
|  | 0c1dd954eb | ||
|  | 116767b8b8 | ||
|  | 3eb5394474 | ||
|  | 953f59195f | ||
|  | 309f3998d7 | ||
|  | 887c4013a0 | ||
|  | f232ddcdcb | ||
|  | bd0424ee7d | ||
|  | 62824e1537 | ||
|  | 36e7d3133b | ||
|  | 20c69951ab | ||
|  | d9d8cdf043 | ||
|  | 29fba02b4a | ||
|  | 1954718e3f | ||
|  | 6712cae260 | ||
|  | 6ddf213d5d | ||
|  | b700a17efa | ||
|  | bedec591a2 | ||
|  | 2c4568119c | ||
|  | efd8e2f343 | ||
|  | f29793c868 | ||
|  | e8bbb15f7e | ||
|  | fdb2e5eb7b | ||
|  | da58e7edb4 | ||
|  | e81b8ba479 | ||
|  | cfbe553724 | ||
|  | 17634e05d4 | ||
|  | 7d216d364e | ||
|  | 9e16f6e88c | ||
|  | f23e8b3d1c | ||
|  | 04d988357f | ||
|  | 14ed950dad | ||
|  | f107c34f82 | ||
|  | 9b5bfd33ef | ||
|  | 8fc6c79b6d | ||
|  | 2d838b9f09 | ||
|  | c1649507e9 | ||
|  | a246a6390f | ||
|  | 6a9317238a | ||
|  | 0a45542477 | ||
|  | 03be66c857 | ||
|  | 777c371be9 | ||
|  | d8bb202fbd | ||
|  | f0f9167682 | ||
|  | 6fbde2ea22 | ||
|  | 2378f459de | ||
|  | 1b4ae67f51 | ||
|  | ec67c56cc7 | ||
|  | 393c1dba75 | ||
|  | 5b76314ef4 | ||
|  | 0ca2053a27 | ||
|  | c2c209d19a | ||
|  | de5137ff28 | ||
|  | ffb4b0fade | ||
|  | bfd03680cc | ||
|  | 82280b673e | ||
|  | 27dbd28c5c | ||
|  | 4d55985151 | ||
|  | 2635e545bf | ||
|  | e8a3a40691 | ||
|  | 3a7d7778a0 | ||
|  | 437c7585cc | ||
|  | 507766bff6 | ||
|  | 74d11991ab | ||
|  | 217a1e92c6 | ||
|  | 83bc7b831d | ||
|  | 1071b2ee69 | ||
|  | 3753ac5ee6 | ||
|  | 6120c5e4a8 | ||
|  | b252a80b7e | ||
|  | d67182f411 | ||
|  | fec8f23ad4 | ||
|  | ab7f1cc3be | ||
|  | 3f65468299 | ||
|  | 333d0c5709 | ||
|  | 8c47939ad2 | ||
|  | 664d24f258 | ||
|  | f8adb23062 | ||
|  | a2a4b1d170 | ||
|  | aa6f26f9fb | ||
|  | fd2ddf8b50 | ||
|  | 0408c86065 | ||
|  | e1555fc335 | ||
|  | 75141bdb65 | ||
|  | 3951c8863f | ||
|  | bdc1579a9c | ||
|  | 8e1c6601af | ||
|  | 1c634bd736 | ||
|  | 2868191440 | ||
|  | a567adcce5 | ||
|  | 5db1ee8fc4 | ||
|  | a6729d9454 | ||
|  | 57f7039795 | ||
|  | 5c3775c6ee | ||
|  | 1cec9b70a2 | ||
|  | eca34c37d9 | ||
|  | 58acfc4042 | ||
|  | feab865203 | ||
|  | 754f09cdad | ||
|  | fac354623b | ||
|  | 5967e6c3e4 | ||
|  | 174f316a62 | ||
|  | c9651a012e | ||
|  | 3130d7db33 | ||
|  | 30af079f99 | ||
|  | 3ccae8efee | ||
|  | 5b946cb261 | ||
|  | 885045ca55 | ||
|  | 01d728ac6b | ||
|  | f9e670f464 | ||
|  | 868e1677e3 | ||
|  | 84407de2aa | ||
|  | 7011b04cb2 | ||
|  | ede4594dd9 | ||
|  | 3a7f02352a | ||
|  | e2cb4ed031 | ||
|  | 24a1fe55bb | ||
|  | 66dddd9799 | ||
|  | b3b2411cb7 | ||
|  | eb71d82ecc | ||
|  | 298fc043ff | ||
|  | 63f678210a | ||
|  | 7a38246284 | ||
|  | 5390903a22 | ||
|  | 4b9e977fdc | ||
|  | 6a9a681559 | ||
|  | a6e919767c | ||
|  | 290e9ac767 | ||
|  | cd8ac36e9b | ||
|  | 3068969b51 | ||
|  | e947e72169 | ||
|  | 86a53dbfc9 | ||
|  | aa5c5c4553 | ||
|  | 1f93237ee3 | ||
|  | 3d248e9ad2 | ||
|  | ec9aedea0b | ||
|  | 33021311b2 | ||
|  | 2a3d9e080a | ||
|  | b528d0b1db | ||
|  | a429e9c3f9 | ||
|  | b90d2c1c90 | ||
|  | 27dc7ef79a | ||
|  | 76441b1d5f | ||
|  | d2e3577784 | ||
|  | 4a0344182f | ||
|  | ddc496cdaa | ||
|  | 746981611b | ||
|  | c1beefce3a | ||
|  | 1667cc8a8d | ||
|  | 0aea46a643 | ||
|  | 820ab2210e | ||
|  | f40e8a57b4 | ||
|  | 005357e821 | ||
|  | 5fcfc95280 | ||
|  | dfc9e912b5 | ||
|  | a6385288aa | ||
|  | 2f6457b3f7 | ||
|  | ba2f0f753b | ||
|  | 38554dbcbe | ||
|  | fe98fde338 | ||
|  | c3ea69f26a | ||
|  | 367e1f047c | ||
|  | 7db1ed695c | ||
|  | 26b4615262 | ||
|  | c4ccf53aad | ||
|  | 8fe9163e6b | 
| @@ -13,7 +13,6 @@ gtopConf.sh | ||||
| i386-bsdi | ||||
| i686-pc-linux-gnu | ||||
| intl | ||||
| libgtop-0.01.tar.gz | ||||
| libgtop-mirror.sh.swp | ||||
| libgtopConf.sh | ||||
| libtool | ||||
| @@ -21,6 +20,7 @@ ltconfig | ||||
| ltmain.sh | ||||
| macros | ||||
| stamp-h | ||||
| stamp-h.in | ||||
| sun4 | ||||
| sun4sol2 | ||||
| support | ||||
| @@ -30,5 +30,6 @@ i686-pc-linux-gnu-linux | ||||
| libgtop-config | ||||
| ABOUT-NLS | ||||
| libgtop.spec | ||||
| libgtop-0.99.*.tar.gz | ||||
| libgtop-0.99.* | ||||
| libgtop*.tar.gz | ||||
| *-debstamp | ||||
| libgtop*.pc | ||||
|   | ||||
							
								
								
									
										2
									
								
								AUTHORS
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								AUTHORS
									
									
									
									
									
								
							| @@ -1,2 +1,2 @@ | ||||
| Martin Baulig (martin@home-of-linux.org) | ||||
| Josh Sled <jsled@scam.XCF.Berkeley.EDU> | ||||
| Drazen Kacar (dave@srce.hr) | ||||
|   | ||||
							
								
								
									
										498
									
								
								ChangeLog
									
									
									
									
									
								
							
							
						
						
									
										498
									
								
								ChangeLog
									
									
									
									
									
								
							| @@ -1,3 +1,501 @@ | ||||
| 2003-10-21  Bastien Nocera  <hadess@hadess.net> | ||||
|  | ||||
| 	* lib/read.c: (glibtop_read_l): | ||||
| 	* lib/read_data.c: (glibtop_read_data_l): | ||||
| 	* lib/write.c: (glibtop_write_l):  | ||||
| 	reverted string freeze breakage | ||||
|  | ||||
| 2003-10-20  Bastien Nocera  <hadess@hadess.net> | ||||
|  | ||||
| 	* lib/read.c: (glibtop_read_l): | ||||
| 	* lib/read_data.c: (glibtop_read_data_l): | ||||
| 	* lib/write.c: (glibtop_write_l): apply patch for ngettext support | ||||
| 	by Christian Neumair <chris@gnome-de.org> | ||||
|  | ||||
| 2003-10-20  Bastien Nocera  <hadess@hadess.net> | ||||
|  | ||||
| 	* src/inodedb/Makefile.am: link to libgtop_suid_common-2.0.la | ||||
| 	(Closes: #107990) | ||||
|  | ||||
| 2003-10-20  Bastien Nocera  <hadess@hadess.net> | ||||
|  | ||||
| 	* configure.in: make it compile | ||||
|  | ||||
| 2003-10-19  Carlos Perelló Marín <carlos@gnome.org> | ||||
|  | ||||
| 	* support/*: Reverted libgtop changes. It's a common module | ||||
| 	and I should not modify it. | ||||
| 	* Added/removed files. Now the move should be done. | ||||
|  | ||||
| 2003-10-19  Carlos Perelló Marín <carlos@gnome.org> | ||||
|  | ||||
| 	* libgtop-GNOME-2-0-branch moved to HEAD. | ||||
|  | ||||
| 2003-09-30  Laurent Dhima  <laurenti@alblinux.net> | ||||
|  | ||||
| 	* configure.in: Added "sq" to ALL_LINGUAS. | ||||
|  | ||||
| 2003-09-17  Fatih Demir <kabalak@gtranslator.org> | ||||
|  | ||||
| 	* configure.in: Added "ta" (Tamil) to the languages' list. | ||||
|  | ||||
| 2003-09-13  Carlos Perelló Marín <carlos@gnome.org> | ||||
|  | ||||
| 	* configure.in (ALL_LINGUAS):  Removed es_ES. | ||||
|  | ||||
| 2003-09-08  Kevin Vandersloot | ||||
|  | ||||
| 	* configure.in: release 2.0.5 | ||||
|  | ||||
| 2003-09-06  Taneem Ahmed  <taneem@bengalinux.org> | ||||
|  | ||||
| 	* configure.in: Added "bn" to ALL_LINGUAS. | ||||
|  | ||||
| 2003-08-24  Kevin Vandersloot | ||||
|  | ||||
| 	* configure.in: release 2.0.4 | ||||
|  | ||||
| 2003-08-13  Guntupalli Karunakar  <karunakar@freedomink.org> | ||||
|  | ||||
| 	* configure.in: Added "hi" (Hindi) in ALL_LINGUAS. | ||||
|  | ||||
| 2003-08-13  Andrew Sobala  <aes@gnome.org> | ||||
|  | ||||
| 	* configure.in: release 2.0.3 | ||||
|  | ||||
| 2003-08-09  Dafydd Harries  <daf@parnassus.ath.cx> | ||||
|  | ||||
| 	* configure.in: Added "cy" (Welsh) to ALL_LINGUAS. | ||||
|  | ||||
| 2003-08-03  Malcolm Tredinnick <malcolm@commsecure.com.au> | ||||
|  | ||||
| 	* Makefile.am: Change subdirectory build order so that | ||||
| 	'distclean' target work (and other targets remain working). | ||||
| 	Fixes bug #84622. | ||||
|  | ||||
| 2003-06-10  Kjartan Maraas  <set EMAIL_ADDRESS environment variable> | ||||
|  | ||||
| 	* libgtop-2.0.pc.in: Fix missing build flags. Patch from | ||||
| 	Julio Merino. Fixes bug #103086. | ||||
| 	* sysdeps/linux/mem.c: (glibtop_get_mem_s): Fix memory calculation | ||||
| 	under Linux. Patch from <rwahl@gmx.de>. Fixes bug #68626. | ||||
|  | ||||
| 2003-06-10  Kjartan Maraas  <kmaraas@gnome.org> | ||||
|  | ||||
| 	* sysdeps/freebsd/glibtop_machine.h: | ||||
| 	* sysdeps/kernel/glibtop_private.h: | ||||
| 	* sysdeps/solaris/glibtop_machine.h: | ||||
| 	* sysdeps/solaris/glibtop_private.h: Comment out text after | ||||
| 	#endif to make some compilers happy. | ||||
|  | ||||
| 2003-05-11  Andrew Sobala  <aes@gnome.org> | ||||
|  | ||||
| 	* configure.in: release 2.0.2 | ||||
|  | ||||
| 2003-05-10  Danilo Šegan  <dsegan@gmx.net> | ||||
|  | ||||
| 	* configure.in: Added "sr" and "sr@Latn" to ALL_LINGUAS. | ||||
|  | ||||
| 2003-04-17  Abel Cheung  <maddog@linux.org.hk> | ||||
|  | ||||
| 	* configure.in: Added "mk" to ALL_LINGUAS. | ||||
|  | ||||
| 2003-03-13  Christian Rose  <menthos@menthos.com> | ||||
|  | ||||
| 	* configure.in: Added "ml" to ALL_LINGUAS. | ||||
|  | ||||
| 2003-03-10  Roozbeh Pournader  <roozbeh@sharif.edu> | ||||
|  | ||||
| 	* configure.in: Added "fa" to ALL_LINGUAS. | ||||
|  | ||||
| 2003-03-08  Gil "Dolfin" Osher <dolfin@rpg.org.il> | ||||
|  | ||||
| 	* configure.in: Added he to ALL_LINGUAS. | ||||
|  | ||||
| 2003-02-25  T?µivo Leedj?¤rv  <toivo@linux.ee> | ||||
|  | ||||
| 	* configure.in: Added et to ALL_LINGUAS. | ||||
|  | ||||
| 2003-02-16  Mohammad DAMT  <mdamt@bisnisweb.com> | ||||
|  | ||||
| 	* po/id.po: Added Indonesian translation | ||||
| 	* configure.in: Added "id" to ALL_LINGUAS | ||||
|  | ||||
| 2003-01-31  James Henstridge  <james@daa.com.au> | ||||
|  | ||||
| 	* acinclude.m4 (GNOME_SUPPORT_CHECKS): use AC_LIBOBJ() to set | ||||
| 	LIBOBJS variable, since newer autoconf's barf on direct access. | ||||
| 	This also takes care of setting LTLIBOBJS for us. | ||||
|  | ||||
| 2003-01-29  Abel Cheung  <maddog@linux.org.hk> | ||||
|  | ||||
| 	* configure.in: Added ar to ALL_LINGUAS | ||||
|  | ||||
| 2003-01-25  Alessio Frusciante  <algol@firenze.linux.it> | ||||
|  | ||||
| 	* configure.in: Added "it" (Italian) to ALL_LINGUAS. | ||||
|  | ||||
| 2003-01-23  Marius Andreiana <marius galuna.ro> | ||||
|  | ||||
| 	* configure.in: Added "ro" to ALL_LINGUAS | ||||
|  | ||||
| 2003-01-22  Christian Rose  <menthos@menthos.com> | ||||
|  | ||||
| 	* configure.in: Added "mn" to ALL_LINGUAS. | ||||
|  | ||||
| 2003-01-16  Daniel Yacob <locales@geez.org> | ||||
|  | ||||
| 	* configure.in: added am to ALL_LINGUAS | ||||
| 	 | ||||
| 2003-01-12  Kevin Vandersloot <kfv101@psu.edu> | ||||
|  | ||||
| 	* configure.in: release 2.0.1 | ||||
|  | ||||
| 2002-12-30  Bastien Nocera <hadess@hadess.net> | ||||
|  | ||||
| 	* Added sysdeps/aix directory that was missing | ||||
|  | ||||
| 2002-10-08  Laurent Vivier <Laurent.Vivier@bull.net> | ||||
|  | ||||
| 	* Framework for AIX support | ||||
|  | ||||
| 2002-08-07  Vincent Berger <Vincent.Berger@ext.bull.net>  | ||||
|  | ||||
| 	* support/: Add alloca management for AIX | ||||
| 	* configure.in: correct checking for nm | ||||
|  | ||||
| 2002-11-03  Dmitry G. Mastrukov  <dmitry@taurussoft.org> | ||||
|  | ||||
| 	* configure.in: Added Belarusian to ALL_LINGUAS | ||||
|  | ||||
| 2002-09-26  Stanislav Brabec  <sbrabec@suse.cz> | ||||
|  | ||||
| 	* configure.in: Added cs to ALL_LINGUAS. | ||||
|  | ||||
| 2002-09-26  jacob berkman  <jacob@ximian.com> | ||||
|  | ||||
| 	* configure.in (ALL_LINGUAS): remove cs until the file actually | ||||
| 	gets added | ||||
|  | ||||
| 2002-09-26  Stanislav Brabec  <sbrabec@suse.cz> | ||||
|  | ||||
| 	* configure.in: Added cs to ALL_LINGUAS. | ||||
|  | ||||
| 2002-08-20  Peteris Krisjanis <peteris.krisjanis@os.lv> | ||||
|  | ||||
| 	* configure.in: (ALL_LINGUAS) Added Latvian (lv). | ||||
|  | ||||
| 2002-06-25  Yanko Kaneti <yaneti@declera.com> | ||||
|  | ||||
| 	* configure.in: (ALL_LINGUAS) Added Bulgarian (bg). | ||||
|  | ||||
| 2002-05-10  Kevin Vandersloot <kfv101@psu.edu> | ||||
|  | ||||
| 	* configure.in: release 2.0.0 | ||||
|  | ||||
| 2002-05-28  Carlos Perello Marin <carlos@gnome-db.org> | ||||
|  | ||||
| 	* configure.in (ALL_LINGUAS): Removed all es_* and added only es_ES. | ||||
|  | ||||
| 2002-05-08  Pablo Saratxaga  <pablo@mandrakesoft.com> | ||||
|  | ||||
| 	* configure.in: Added Vietnamese (vi) to ALL_LINGUAS | ||||
|  | ||||
| 2002-03-12  James Henstridge  <james@daa.com.au> | ||||
|  | ||||
| 	* acinclude.m4 (LIBGTOP_HEACKER_TESTS): AM_CONDITIONAL() | ||||
| 	statements can't be conditionally executed (automake compat fix). | ||||
| 	(GNOME_LIBGTOP_SYSDEPS): move the conditional here so that it is | ||||
| 	always executed. | ||||
|  | ||||
| 2002-02-10  Kevin Vandersloot <kfv101@psu.edu> | ||||
|  | ||||
| 	* configure.in: bump version | ||||
|  | ||||
| 	* release 1.90.2 | ||||
|  | ||||
| 2002-02-09  Bastien Nocera  <hadess@hadess.net> | ||||
|  | ||||
| 	reviewed by: Kevin Vandersloot <kfv101@psu.edu> | ||||
|  | ||||
| 	* configure.in: remove need for dc, and clean up | ||||
| 	* stamp-h.in, .cvsignore: remove | ||||
|  | ||||
| 2002-02-05  Abel Cheung  <maddog@linux.org.hk> | ||||
|  | ||||
| 	* configure.in (ALL_LINGUAS): zh_CN.GB2312 -> zh_CN | ||||
|  | ||||
| 2001-01-14  Hasbullah bin Pit <sebol@ikhlas.com> | ||||
|  | ||||
| 	* configure.in: Added ms in ALL_LINGUAS. | ||||
| 	* po/ms.po: Added Malay Translation. | ||||
| 	* po/.cvsignore: Added 'libgtop-2.0.pot'. | ||||
|  | ||||
| 2001-01-14  Abel Cheung  <maddog@linux.org.hk> | ||||
|  | ||||
| 	* configure.in: Sync'ed ALL_LINGUAS with files in po directory, | ||||
| 	and renamed GETTEXT_PACKAGE to avoid conflict with libgtop 1.0.x. | ||||
|  | ||||
| 2002-01-10  Kevin Vandersloot <kfv101@psu.edu> | ||||
|  | ||||
| 	* acininclude.m4: add back the support stuf but make it really | ||||
| 	work | ||||
|  | ||||
| 	* configure.in: bump version number, add back GNOME_SUPPORT  | ||||
| 	check since that was causing a build failure | ||||
|  | ||||
| 	* release 1.90.1 | ||||
|  | ||||
| 2002-01-09  Kevin Vandersloot <kfv101@psu.edu> | ||||
|  | ||||
| 	* acinclude.m4: remove gnome support check. Fixes the build | ||||
| 	for those with automake < 1.4p5. | ||||
|  | ||||
| 	* configure.in: remove check for GNOME_SUPPORT | ||||
|  | ||||
| 2001-14-27  Miles Lane <miles@megapathdsl.net> | ||||
|  | ||||
| 	* acconfig.h:  Added "#undef HAVE_GETTEXT" entry. | ||||
| 	* LIBGTOP_VERSION:  Removed file. | ||||
| 	* configure.in:  added glib-gettextize support and | ||||
| 	  moved in the *VERSION* stuff from LIBGTOP_VERSION. | ||||
|  | ||||
| 2001-11-27  Kevin Vandersloot <kfv101@psu.edu> | ||||
|  | ||||
| 	* acinclude.m4: copy some of the macros that were formerly | ||||
| 	in gnome-macros | ||||
|  | ||||
| 	* configure.in, sysdeps/Makefile.am: comment out guile | ||||
| 	support for now. | ||||
|  | ||||
| 	* release 1.90.0 | ||||
|  | ||||
| 2001-11-26  Kevin Vandersloot <kfv101@psu.edu> | ||||
|  | ||||
| 	* src/daemon/gnuserv.c:  Apply patch fixing security issue from | ||||
|         intexxia labs - #1048-261101 | ||||
|  | ||||
| 2001-11-26  Abel Cheung <maddog@linux.org.hk> | ||||
|  | ||||
| 	* src/inodedb/file_by_inode.c: Rename to file_by_inode2.c | ||||
| 	* src/inodedb/mkinodedb.c: Rename to mkinodedb2.c | ||||
|  | ||||
| 	* po/POTFILES.in: Reflect above change | ||||
|  | ||||
| 	* */.cvsignore: Add various files | ||||
|  | ||||
| 2001-11-25  Kevin Vandersloot <kfv101@psu.edu> | ||||
|  | ||||
| 	* port stable libgtop to GNOME 2.0. Too much to detail. | ||||
| 	pkgconfig is now used. Libs are named libgtop-2.0 etc for | ||||
| 	parallel install.  | ||||
|  | ||||
| 2001-10-17  Abel Chueng  <maddog@linux.org.hk> | ||||
|  | ||||
| 	* configure.in, Makefile.am, include/glibtop/Makefile.am: headers | ||||
| 	moved to $(includedir)/libgtop-1.0/glibtop. | ||||
|  | ||||
| 2001-09-16  Abel Chueng  <maddog@linux.org.hk> | ||||
|  | ||||
| 	* configure.in: Added "zh_TW" to ALL_LINGUAS. | ||||
|  | ||||
| 2001-02-13  Martin Baulig  <baulig@suse.de> | ||||
|  | ||||
| 	Released LibGTop 1.0.12 "Gerolzhofen". | ||||
|  | ||||
| 	* NEWS: Added news entry to 1.0.12. | ||||
|  | ||||
| 	* LIBGTOP-VERSION: Set version number to 1.0.12, binary age 11, | ||||
| 	interface age 11. | ||||
|  | ||||
| 2001-02-19  Simos Xenitellis  <simos@hellug.gr> | ||||
|  | ||||
| 	* configure.in: Added "el" to ALL_LINGUAS. | ||||
|  | ||||
| 2001-02-15  Martin Baulig  <baulig@suse.de> | ||||
|  | ||||
| 	Released LibGTop 1.0.11 "Jasmin". | ||||
|  | ||||
| 	* NEWS: Added news entry for 1.0.11. | ||||
|  | ||||
| 2001-02-14  Martin Baulig  <baulig@suse.de> | ||||
|  | ||||
| 	Merged from LIBGTOP_1_1_2_PATCHES. | ||||
|  | ||||
| 	* libgtop-sysdeps.m4 (GLIBTOP_SOLARIS_RELEASE): Define this on Solaris; | ||||
| 	we use version codes like 270 for SunOS 5.7 and 251 for SunOS 2.5.1. | ||||
|  | ||||
| 	* LIBGTOP-VERSION (LIBGTOP_VERSION_SUFFIX): Added this so you can | ||||
| 	have your tarballs called `libgtop-1.x.y-snap.tar.gz' or whatever. | ||||
| 	This only affects the `VERSION' variable and thus how the resulting | ||||
| 	tarball will be called, but not `LIBGTOP_VERSION_CODE' etc. | ||||
|  | ||||
| 	* configure.in, acconfig.h: Added checks for <procfs.h> | ||||
| 	and <sys/procfs.h> | ||||
|  | ||||
| 	* configure.in (DL_LIB): Check for dlopen() and AC_SUBST this. | ||||
|  | ||||
| 	* Makefile.am: Make `aclocal.m4' also depend on `LIBGTOP-VERSION' | ||||
| 	when in maintainer-mode. | ||||
|  | ||||
| 2001-02-14  Martin Baulig  <baulig@suse.de> | ||||
|  | ||||
| 	* include/glibtop/limits.h: Removed; this file doesn't exist | ||||
| 	in the stable branch. | ||||
|  | ||||
| 2001-02-13  Martin Baulig  <baulig@suse.de> | ||||
|  | ||||
| 	* LIBGTOP-VERSION: Set version number to 1.0.11, binary age 10, | ||||
| 	interface age 10. | ||||
|  | ||||
| 2001-02-13  Stanislav Visnovsky  <visnovsky@nenya.ms.mff.cuni.cz> | ||||
|  | ||||
| 	* configure.in: Added sk to ALL_LINGUAS | ||||
|  | ||||
| 2001-02-08  Gustavo Maciel Dias Vieira  <gdvieira@zaz.com.br> | ||||
|  | ||||
| 	* configure.in (ALL_LINGUAS): Added pt_BR to ALL_LINGUAS. | ||||
|  | ||||
| 2000-11-21  Martin Baulig  <baulig@suse.de> | ||||
|  | ||||
| 	* libgtop-config.h.in: Added `--cflags', `--libs' and `--extra-libs' | ||||
| 	parameters. | ||||
|  | ||||
| 2000-11-20  Martin Baulig  <baulig@suse.de> | ||||
|  | ||||
| 	Released LibGTop 1.0.10 "November Rain". | ||||
|  | ||||
| 	* LIBGTOP-VERSION: Set version number to 1.0.10, binary age 9, | ||||
| 	interface age 9. | ||||
|  | ||||
| 2000-05-25  Martin Baulig  <baulig@suse.de> | ||||
|  | ||||
| 	Released LibGTop 1.0.9 "Stuttgart". | ||||
|  | ||||
| 	* LIBGTOP-VERSION: Set version number to 1.0.9 binary age 8, | ||||
| 	interface age 8. | ||||
|  | ||||
| 	(LibGTop 1.0.8 "Frankfurt" was not publically released.) | ||||
|  | ||||
| 2000-02-20  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* LIBGTOP-VERSION: Set version number to 1.0.8 binary age 7, | ||||
| 	interface age 7. | ||||
|  | ||||
| 2000-02-15  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	Released LibGTop 1.0.7 "Copenhagen". | ||||
|  | ||||
| 1999-10-19  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* LIBGTOP-VERSION: Set version number to 1.0.7 binary age 6, | ||||
| 	interface age 6. | ||||
|  | ||||
| 1999-10-18  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	Released LibGTop 1.0.6 "October LibGTop". | ||||
|  | ||||
| 1999-10-18  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* NEWS.old: Removed obsolete file. | ||||
|  | ||||
| 	* RELNOTES-1.0.x: Added release notes for LibGTop 1.0.6. | ||||
|  | ||||
| 	* TODO: Removed obsolete file. | ||||
|  | ||||
| 	* NEWS: We start maintaining a NEWS file now :) | ||||
|  | ||||
| 1999-10-16  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* LIBGTOP-VERSION: Set version number to 1.0.6 binary age 5, | ||||
| 	interface age 5. | ||||
|  | ||||
| 1999-10-09  Jesus Bravo Alvarez  <jba@pobox.com> | ||||
|  | ||||
| 	* configure.in (ALL_LINGUAS): Added Galician (gl) | ||||
|  | ||||
| 1999-09-29  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	Released LibGTop 1.0.5. | ||||
|  | ||||
| 1999-09-29  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* configure.in (libgtop_top_builddir): AC_SUBST this. | ||||
|  | ||||
| 1999-09-24  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* LIBGTOP-VERSION: Set version number to 1.0.5 binary age 4, | ||||
| 	interface age 4. | ||||
|  | ||||
| 1999-09-24  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	Released LibGTop 1.0.4. | ||||
|  | ||||
| 1999-09-22  Kjartan Maraas  <kmaraas@online.no> | ||||
|  | ||||
| 	* configure.in: Added "da" to ALL_LINGUAS. | ||||
| 	 | ||||
| 1999-09-19  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* libgtopConf.sh.in: Added MODULE_VERSION on Miguel's | ||||
| 	request (set it to "libgtop-@LIBGTOP_VERSION@"). | ||||
|  | ||||
| 1999-09-18  Pablo Saratxaga <pablo@mandrakesoft.com> | ||||
|  | ||||
| 	* configure.in, po/*.po: merged *.po files from HEAD CVS | ||||
|  | ||||
| 1999-09-17  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* configure.in: Make it work if we have GNOME and the user | ||||
| 	gave use --without-gnome (fixes bug #1735). | ||||
|  | ||||
| 1999-09-17  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* LIBGTOP-VERSION: Set version number to 1.0.4 binary age 3, | ||||
| 	interface age 3. | ||||
|  | ||||
| 1999-09-16  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	Merged everything since May 31 from HEAD and released | ||||
|  	LibGTop 1.0.3. | ||||
|  | ||||
| 1999-07-29  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* include/glibtop/error.h: Use G_GNUC_UNUSED. | ||||
|  | ||||
| 	* configure.in (ENABLE_STATIC, ENABLE_SHARED): New automake | ||||
| 	conditionals. | ||||
|  | ||||
| 1999-07-11  Tomas Ogren  <stric@ing.umu.se> | ||||
|  | ||||
| 	* configure.in: Added sv to ALL_LINGUAS | ||||
|  | ||||
| 1999-07-11  Tomas Ogren  <stric@ing.umu.se> | ||||
|  | ||||
| 	* sysdeps/names/procmem.c: Fixed a tyop | ||||
|  | ||||
| 1999-05-31  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* LIBGTOP-VERSION: Set version number to 1.0.3 binary age 2, | ||||
| 	interface age 2. | ||||
|  | ||||
| 1999-05-31  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	Released LibGTop 1.0.2. | ||||
|  | ||||
| 1999-05-26  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* configure.in (INCLUDES): Define `LIBGTOP_VERSION_CODE' here so we | ||||
| 	can use version conditionals in the sysdeps code. | ||||
|  | ||||
| 1999-05-25  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* libgtop-sysdeps.m4: Make the I4B check work for NetBSD. | ||||
|  | ||||
| 1999-05-16  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* doc: Merged the LibGTop Manual from the HEAD. | ||||
|  | ||||
| 1999-03-01  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	Released LibGTop 1.0.1. | ||||
|   | ||||
| @@ -7,11 +7,14 @@ | ||||
| # set LIBGTOP_BINARY_AGE and LIBGTOP_INTERFACE_AGE to 0. | ||||
| # | ||||
| LIBGTOP_MAJOR_VERSION=1 | ||||
| LIBGTOP_MINOR_VERSION=0 | ||||
| LIBGTOP_MICRO_VERSION=1 | ||||
| LIBGTOP_MINOR_VERSION=90 | ||||
| LIBGTOP_MICRO_VERSION=0 | ||||
|  | ||||
| LIBGTOP_INTERFACE_AGE=0 | ||||
| LIBGTOP_BINARY_AGE=0 | ||||
| # you can set this to `-snap' for instance to create | ||||
| # a `libgtop-1.x.y-snap.tar.gz' tarball. | ||||
| LIBGTOP_VERSION_SUFFIX= | ||||
|  | ||||
| # Increase each time you change the client/server protocol. | ||||
| LIBGTOP_SERVER_VERSION=5 | ||||
| @@ -21,5 +24,5 @@ LIBGTOP_VERSION=$LIBGTOP_MAJOR_VERSION.$LIBGTOP_MINOR_VERSION.$LIBGTOP_MICRO_VER | ||||
| LIBGTOP_VERSION_CODE=`echo "$LIBGTOP_MAJOR_VERSION 1000000 * $LIBGTOP_MINOR_VERSION 1000 * + $LIBGTOP_MICRO_VERSION + p q" | dc` | ||||
|  | ||||
| # For automake. | ||||
| VERSION=$LIBGTOP_VERSION | ||||
| VERSION=$LIBGTOP_VERSION$LIBGTOP_VERSION_SUFFIX | ||||
| PACKAGE=libgtop | ||||
|   | ||||
							
								
								
									
										2
									
								
								MAINTAINERS
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								MAINTAINERS
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | ||||
| Email: martin@home-of-linux.org | ||||
| Email: dave@srce.hr | ||||
							
								
								
									
										43
									
								
								Makefile.am
									
									
									
									
									
								
							
							
						
						
									
										43
									
								
								Makefile.am
									
									
									
									
									
								
							| @@ -10,14 +10,16 @@ if BUILD_GNOME_SUPPORT | ||||
| support = support | ||||
| endif | ||||
|  | ||||
| SUBDIRS = po intl $(support) macros misc include sysdeps lib src \ | ||||
| 	  $(examples_SUBDIRS) | ||||
| SUBDIRS = . po $(support) misc include sysdeps lib src \ | ||||
| 	  $(examples_SUBDIRS) doc | ||||
|  | ||||
| include_HEADERS = glibtop.h | ||||
| libgtopinclude_HEADERS = glibtop.h | ||||
| libgtopincludedir = $(includedir)/libgtop-2.0 | ||||
|  | ||||
| EXTRA_DIST = autogen.sh libgtop.spec.in copyright.txt libgtopConf.sh.in \ | ||||
| 	LIBGTOP-VERSION features.def libgtop-config.in RELNOTES-0.25 \ | ||||
| 	RELNOTES-1.0 libgtop-sysdeps.m4 README NEWS.old libgtop-mirror.sh | ||||
| 	RELNOTES-1.0 RELNOTES-1.0.x libgtop-sysdeps.m4 README \ | ||||
| 	libgtop-mirror.sh libgtop-2.0.pc.in acinclude.m4 | ||||
|  | ||||
| dist-hook: | ||||
| 	cp libgtop.spec $(distdir) | ||||
| @@ -27,19 +29,24 @@ release: | ||||
|  | ||||
| ## Put `exec' in the name because this should be installed by | ||||
| ## `install-exec', not `install-data'. | ||||
| confexecdir	= $(libdir) | ||||
| confexec_DATA	= $(top_builddir)/libgtopConf.sh \ | ||||
| 		  $(top_builddir)/libgtop-features.def | ||||
| ## confexecdir	= $(libdir) | ||||
| ## confexec_DATA	= $(top_builddir)/libgtopConf.sh \ | ||||
| ##		  $(top_builddir)/libgtop-features.def | ||||
| 		   | ||||
| pkgconfigdir = $(libdir)/pkgconfig | ||||
| pkgconfig_DATA = libgtop-2.0.pc | ||||
|  | ||||
| bin_SCRIPTS = $(top_builddir)/libgtop-config | ||||
| CLEANFILES=libgtopConf.sh | ||||
|  | ||||
| ## bin_SCRIPTS = $(top_builddir)/libgtop-config | ||||
|  | ||||
| ## to automatically rebuild aclocal.m4 if any of the macros in | ||||
| ## `macros/' change | ||||
| @MAINT@ include macros/macros.dep | ||||
| @MAINT@macros/macros.dep: macros/Makefile.am | ||||
| @MAINT@	cd macros && $(MAKE) macros.dep | ||||
| ## @MAINT@ include macros/macros.dep | ||||
| ## @MAINT@macros/macros.dep: macros/Makefile.am | ||||
| ## @MAINT@	cd macros && $(MAKE) macros.dep | ||||
|  | ||||
| @MAINT@$(top_srcdir)/aclocal.m4: libgtop-sysdeps.m4 | ||||
| @MAINT@$(top_srcdir)/aclocal.m4: libgtop-sysdeps.m4 LIBGTOP-VERSION | ||||
|  | ||||
| ## We create libgtopConf.sh here and not from configure because we want | ||||
| ## to get the paths expanded correctly.  Macros like srcdir are given | ||||
| @@ -48,7 +55,7 @@ bin_SCRIPTS = $(top_builddir)/libgtop-config | ||||
| libgtopConf.sh: libgtopConf.sh.in Makefile | ||||
| ## Use sed and then mv to avoid problems if the user interrupts. | ||||
| 	sed -e 's#\@LIBGTOP_LIBDIR\@#$(libdir)#g' \ | ||||
| 	  -e 's#\@LIBGTOP_INCLUDEDIR\@#$(includedir)#g' \ | ||||
| 	  -e 's#\@LIBGTOP_INCLUDEDIR\@#$(includedir)/libgtop-2.0#g' \ | ||||
| 	  -e 's#\@LIBGTOP_DATADIR\@#$(datadir)#g' \ | ||||
| 	  -e 's#\@LIBGTOP_EXTRA_LIBS\@#$(LIBGTOP_EXTRA_LIBS)#g' \ | ||||
| 	  -e 's#\@LIBGTOP_LIBS\@#$(LIBGTOP_LIBS)#g' \ | ||||
| @@ -75,11 +82,11 @@ libgtopConf.sh: libgtopConf.sh.in Makefile | ||||
| 	      < $(srcdir)/libgtopConf.sh.in > libgtopConf.tmp \ | ||||
| 	  && mv libgtopConf.tmp libgtopConf.sh | ||||
|  | ||||
| libgtop-config: libgtop-config.in Makefile | ||||
| 	sed -e 's#\@LIBGTOP_LIBDIR\@#$(libdir)#g' \ | ||||
| 	      < $(srcdir)/libgtop-config.in > libgtop-config.tmp \ | ||||
| 	  && mv libgtop-config.tmp libgtop-config && \ | ||||
| 		chmod 755 libgtop-config | ||||
| # libgtop-config: libgtop-config.in Makefile | ||||
| #	sed -e 's#\@LIBGTOP_LIBDIR\@#$(libdir)#g' \ | ||||
| #	      < $(srcdir)/libgtop-config.in > libgtop-config.tmp \ | ||||
| #	  && mv libgtop-config.tmp libgtop-config && \ | ||||
| #		chmod 755 libgtop-config | ||||
|  | ||||
| libgtop-features.def: features.def | ||||
| 	@LN_S@ $< $@ | ||||
|   | ||||
							
								
								
									
										68
									
								
								NEWS
									
									
									
									
									
								
							
							
						
						
									
										68
									
								
								NEWS
									
									
									
									
									
								
							| @@ -0,0 +1,68 @@ | ||||
| February 27, 2001: | ||||
| ================= | ||||
|  | ||||
| * Released LibGTop 1.0.12 "Gerolzhofen". | ||||
|  | ||||
|   - fix for Solaris 8 from Laszlo PETER (msg_limits, sem_limits). | ||||
|  | ||||
|   - fix for FreeBSD 4.2 from Rolf Grossmann (FreeBSD now uses | ||||
|     `_KERNEL' instead of `KERNEL'). Bug #51334. | ||||
|  | ||||
|   - for BSDI, comment out `subnet' field in netload; this should make | ||||
|     it compile, but there may be other problems. Bug #13345. | ||||
|  | ||||
|   This release is for GNOME 1.4 Beta2. | ||||
|  | ||||
| February 14, 2001: | ||||
| ================= | ||||
|  | ||||
| * Released LibGTop 1.0.11 "Jasmin": | ||||
|  | ||||
|   [The release which was supposed to be called "Gerolzhofen".] | ||||
|  | ||||
|   - merged in the Solaris code from LIBGTOP_1_1_2_PATCHES. | ||||
|  | ||||
|   - minor OpenBSD fixes. | ||||
|  | ||||
|   - again a bunch of updated translations. | ||||
|  | ||||
|   Please test the Solaris stuff and report and bugs and | ||||
|   problems as soon as possible; I'll make a new release | ||||
|   for the 2nd beta of GNOME 1.4 if necessary. | ||||
|  | ||||
| November 20, 2000: | ||||
| ================= | ||||
|  | ||||
| * Released LibGTop 1.0.10 "November Rain": | ||||
|  | ||||
|   - this release contains a bunch of updated translations. | ||||
|  | ||||
| May 25, 2000: | ||||
| ============ | ||||
|  | ||||
| * Released LibGTop 1.0.9 "Stuttgart". | ||||
|  | ||||
|   (LibGTop 1.0.8 "Frankfurt" was not publically released.) | ||||
|  | ||||
| February 15, 2000: | ||||
| ================= | ||||
|  | ||||
| * Released LibGTop 1.0.7 "Copenhagen": | ||||
|  | ||||
|   - this is a bug fix release for the GUADEC CD-ROM; | ||||
|     it contains fixes in both the Linux and *BSD sysdeps | ||||
|     directory. | ||||
|  | ||||
| October 18, 1999: | ||||
| ================ | ||||
|  | ||||
| * Released LibGTop 1.0.6 "October LibGTop": | ||||
|  | ||||
|   - compilation fixes for FreeBSD. | ||||
|   - updated reference manual. | ||||
|  | ||||
| September 29, 1999: | ||||
| ================== | ||||
|  | ||||
| * Released LibGTop 1.0.5. | ||||
|  | ||||
|   | ||||
							
								
								
									
										244
									
								
								NEWS.old
									
									
									
									
									
								
							
							
						
						
									
										244
									
								
								NEWS.old
									
									
									
									
									
								
							| @@ -1,244 +0,0 @@ | ||||
| $Id$ | ||||
|  | ||||
| Jun/01/1998 | ||||
| =========== | ||||
|  | ||||
| 	* We have some new ``suffix rules'': | ||||
|  | ||||
| 	  '__l' is a function defined in the client part; | ||||
| 	  '__s' is a function defined in the sysdeps part and | ||||
| 	  '__p' is a function that needs special priviledges. | ||||
| 	  '__r' is mapped either on '__p' or on '__s'. | ||||
| 	  the function without suffix is mapped on '__l'. | ||||
|  | ||||
| 	* We now decide at runtime whether or not using the server | ||||
| 	is required for a particular function. All user programs | ||||
| 	now call the '__l' function defined in '-lgtop' (in the lib | ||||
| 	subdir). These functions either use 'glibtop_call__l' to | ||||
| 	call the server or call the '__r' function. | ||||
|  | ||||
| 	* A function in the sysdeps directory now has the '__s' suffix | ||||
| 	if it do not need any priviledges (and thus can be called directly | ||||
| 	from client code) and the '__p' suffix otherwise (when it has to | ||||
| 	be called from the server). | ||||
|  | ||||
| 	* If you call one of these functions: | ||||
|  | ||||
| 	  -> use the '__p' suffix to be sure to get the SUID-safe one | ||||
| 	     (used in the server). | ||||
| 	  -> use the '__s' suffix to be sure to get a function that | ||||
| 	     doesn't need any priviledges. | ||||
| 	  -> use the '__r' suffix otherwise (it is mapped either on the | ||||
| 	     '__p' or on the '__s' one). | ||||
|  | ||||
| 	Only use the '__p' and '__s' functions in a 'GLIBTOP_SUID_<feature>' | ||||
| 	conditional, otherwise you'll get undefined symbols ! | ||||
|  | ||||
| 	* The server is now started from 'glibtop_init__r', but only when | ||||
| 	it's really needed; for instance on DEC OSF/1 you only need it | ||||
| 	for the proc* features - if you program only fetches the CPU usage, | ||||
| 	now server will be started. | ||||
|  | ||||
| 	* Sorry, at the moment everything is a little bit unstable, I'm doing | ||||
| 	heavy changes. I've just some great ideas which still need some work: | ||||
|  | ||||
| 	  -> I want to have a SUID server that only implements those features | ||||
| 	     that need to be SUID; everything else uses the sysdeps code directly. | ||||
|  | ||||
| 	  -> If a program only uses stuff that do not need the server, the | ||||
| 	     server will not be started at all. | ||||
|  | ||||
| 	  -> I'm working on some kind of proxy server that can be used on a remote | ||||
| 	     host; in feature one can then use the MDI stuff from ghex in gtop to | ||||
| 	     have notebook pages displaying processes from different hosts. | ||||
|  | ||||
| 	* Well it is as much unstable that it only works under Linux at the moment. | ||||
|  | ||||
| 1998-06-01  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* sysdeps/common/sysdeps.c: now using '__r' functions, | ||||
| 	they are #defined either as the '__p' or the '__s' ones. | ||||
|  | ||||
| 	* sysdeps/linux/*.c: changed call of 'glibtop_init__r', | ||||
| 	it now takes two additional arguments. | ||||
|  | ||||
| 	* examples/{first.c, second.c}: now using 'glibtop_init' | ||||
| 	instead of 'glibtop_init__r'. | ||||
|  | ||||
| 	* include/glibtop/sysdeps.h: added 'dummy' member so | ||||
| 	'GLIBTOP_SYSDEPS_<feature>' now start with 1. | ||||
|  | ||||
| 	* include/glibtop/*.h: we now #define 'glibtop_get_<feature>' | ||||
| 	as 'glibtop_get_<feature>__l' and 'glibtop_get_<feature>__r' | ||||
| 	either as the '__p' or the '__s' function. | ||||
|  | ||||
| 	* lib/*.c: removed #if's - we now decide at runtime | ||||
| 	whether to use the server or to call the appropriate | ||||
| 	function for the sysdeps directory. | ||||
|  | ||||
| 1998-05-28  Martin Baulig  <baulig@merkur.uni-trier.de> | ||||
|  | ||||
| 	* src/server/main.c: we now use the '__p' functions, | ||||
| 	but only if the appropriate 'GLIBTOP_SUID_<feature>' | ||||
| 	has a non-zero value. | ||||
| 	 | ||||
| 	* configure.in (@machine_incs@): always use  | ||||
| 	`-I$(top_srcdir)/sysdeps/@sysdeps_dir@'; it's no | ||||
| 	longer conditional. | ||||
|  | ||||
| 	* examples/Makefile.am: removed the '_linux' examples. | ||||
| 	 | ||||
| 	* sysdeps/linux/*.c: renamed all functions implementing | ||||
| 	features to '__s'. | ||||
| 	 | ||||
| 	* lib/*.c: renamed all functions implementing features | ||||
| 	to '__l'; we only emit code for those functions if the | ||||
|  	corresponding 'GLIBTOP_SUID_<feature>' has a positive value. | ||||
| 	 | ||||
| 	* include/glibtop/*.h: added some new function suffixes: | ||||
| 	'__l' is a function defined in the client part; | ||||
| 	'__s' is a function defined in the sysdeps part and | ||||
| 	'__p' is a function that needs special priviledges. | ||||
| 	'__r' is mapped either on '__l' or on '__s'. | ||||
| 	 | ||||
| 	* sysdeps/linux/glibtop_server.h: New file - | ||||
| 	defines system dependent constants 'GLIBTOP_SUID_<feature>' | ||||
| 	being either 'GLIBTOP_SYSDEPS_<feature>'+1 depending upon | ||||
|  	whether or not this feature requires using the server. | ||||
|  | ||||
| 	* lib/sysdeps.c: removed that file; it is no longer | ||||
| 	needed. | ||||
|  | ||||
|  | ||||
|  | ||||
| May/21/1998 | ||||
| =========== | ||||
|  | ||||
| * doc/gnome-hackers.sgml: This is a short intro on how to use libgtop | ||||
|   in the GNOME project. It covers especially the use of its 'configure' | ||||
|   script and the automatically generated 'gtopConf.sh'. | ||||
|  | ||||
| May/20/1998 | ||||
| =========== | ||||
|  | ||||
| * 'gtopConf.sh' now defines 'GTOP_LIBS' and 'GTOP_INCS' in a manner | ||||
|   that they contain everything that is needed to link some program with | ||||
|   libgtop. It will use '-lgtop' only if the server is really needed and | ||||
|   '-lgtop_sysdeps' otherwise; | ||||
|  | ||||
| * 'gtopConf.sh' additionally defines 'GTOP_GUILE_LIBS' and 'GTOP_GUILE_INCS' | ||||
|   containing everything that is needed to link some program both with | ||||
|   libgtop and its guile interface. They are identically to 'GTOP_LIBS' | ||||
|   and 'GTOP_INCS' if building the guile interface is disabled or guile | ||||
|   cannot be found on the system. | ||||
|  | ||||
| * 'configure' takes additional arguments '--enable-libgtop-server' and | ||||
|   '--disable-libgtop-server' to use the server even when it's not needed | ||||
|   or to disable it's use where it's needed. | ||||
|  | ||||
| * 'configure' takes an argument '--without-libgtop-guile' to disable | ||||
|   guile support. | ||||
|  | ||||
| * 'configure takes an argument '--without-libgtop-names' to remove | ||||
|   '-lgtop_names' (and '-lgtop_guile_names' when we have guile) from | ||||
|   'GTOP_LIBS'; in this case these libraries are not even built. | ||||
|  | ||||
| May/19/1998 | ||||
| =========== | ||||
|  | ||||
| * Libgtop is now in the GNOME CVS Repository. | ||||
|  | ||||
| May/17/1998 | ||||
| =========== | ||||
|  | ||||
| * we have now 'const char *glibtop_types_* []' consisting | ||||
|   of the C types of the corresponding files of '_glibtop_*'. | ||||
|  | ||||
| * added guile function '(glibtop-types-*)' and '(glibtop-descriptions-*)'. | ||||
|  | ||||
| May/10/1998 | ||||
| =========== | ||||
|  | ||||
| * Port to DEC OSF1 3.0 has been made: | ||||
|  | ||||
|   cpu		(total, user, nice, sys, idle) | ||||
|   mem		(total, used, free) | ||||
|  | ||||
|   loadavg	(loadavg) | ||||
|   uptime	(uptime) | ||||
|  | ||||
|   msg_limits	(map, max, mnb, mni, tql) | ||||
|   sem_limits	(mni, msl, opm, vmx, aem) | ||||
|   shm_limits	(max, min, mni, seg) | ||||
|  | ||||
|   The following need the server to be SUID root: | ||||
|  | ||||
|   proclist	(total, number, size) | ||||
|   procdata	(cmd, state, uid, pid, ppid, pgrp, tty, k_flags, | ||||
| 		 session, tpgid, sigignore, sigcatch, signal, nice,  | ||||
| 		 priority, resident, rss, vsize, utime, stime, | ||||
| 		 cutime, cstime, trs, drs) | ||||
|  | ||||
| May/07/1998 | ||||
| =========== | ||||
|  | ||||
| * 'flags' member of sysdeps/linux/procdata.c is now | ||||
|   'unsigned long flags [2]'. | ||||
|  | ||||
| * When we give glibtop_get_procdata () a pid of zero, only | ||||
|   the flags are returned. | ||||
|  | ||||
| * We now use static constants instead of #defines for sysdeps flags. | ||||
|  | ||||
| May/03/1998 | ||||
| =========== | ||||
|  | ||||
| * VPATH-Build now working; sometimes it's necessary to copy | ||||
|   $(top_srcdir)/po/cat-id-tbl.c to $(top_builddir)/po. | ||||
|  | ||||
| * The library has been tested on the following systems: | ||||
|  | ||||
|   - i686-pc-linux-gnu | ||||
|   - sparc-sun-sunos4.1.1 | ||||
|   - alpha-dec-osf1 (that's DEC OSF1 3.0 and 3.2) | ||||
|  | ||||
| * Compilation has been tested on the following systems (I have no root | ||||
|   access there and cannot test the library because of this): | ||||
|  | ||||
|   - sparc-sun-solaris2 | ||||
|   - i386-bsdi | ||||
|  | ||||
| * Does no longer require Gnome. | ||||
|  | ||||
| * Guile-Parts are compiled only if guile can be found. | ||||
|  | ||||
| * Some of the executables are statically linked to copy them more easily | ||||
|   between machines. | ||||
|  | ||||
| May/02/1998 | ||||
| =========== | ||||
|  | ||||
|  * Global changes to the interfaces, all functions except glibtop_open() | ||||
|    and glibtop_close() that took a server argument have now a '__r' suffix; | ||||
|    the original name is now a macro that uses glibtop_global_server. | ||||
|  | ||||
| Apr/10/1998 | ||||
| =========== | ||||
| Added new directory sysdeps/guile/names. It is the guile interface | ||||
| to the gtop_names library found in sysdeps/names. Changed | ||||
| GLIBTOP_DESCRIPTIONS to GLIBTOP_NAMES and added GLIBTOP_GUILE_NAMES | ||||
| to the header files. | ||||
|  | ||||
| Apr/09/1998 | ||||
| =========== | ||||
| Added new directories guile and names to sysdeps. In names are | ||||
| some string constants about the data stored in the structures. | ||||
| guile is a guile interface for the library. It is used in | ||||
| examples/third (which has been completely rewritten). | ||||
| The header files define things from names when GLIBTOP_DESCRIPTIONS | ||||
| if defined and/or from guile when HAVE_GUILE is defined. | ||||
|  | ||||
| Apr/08/1998 | ||||
| =========== | ||||
|  | ||||
| Added guile wrapper for the library (see examples/third). | ||||
| @@ -87,7 +87,7 @@ LibGTop is currently used in various places in the GNOME Project, | ||||
| for instance in some of the applets in gnome-core and - of cause - | ||||
| this ultra-cool application called GTop ... | ||||
|  | ||||
| Although LibGTop is not specific to GNOME and under LGPL license, I | ||||
| Although LibGTop is not specific to GNOME and under GPL license, I | ||||
| spent most my time during the last months to work in the GNOME project | ||||
| so this is the primary use for LibGTop (and currently the only one). | ||||
|  | ||||
|   | ||||
							
								
								
									
										172
									
								
								RELNOTES-1.0.x
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										172
									
								
								RELNOTES-1.0.x
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,172 @@ | ||||
| RELEASE NOTES FOR LIBGTOP 1.0.7 | ||||
| =============================== | ||||
|  | ||||
| OVERVIEW | ||||
| -------- | ||||
|  | ||||
| LibGTop is a library that read information about processes and the | ||||
| running systems. This information include: | ||||
|  | ||||
| General System Information: | ||||
|  | ||||
| cpu		- CPU Usage | ||||
| mem		- Memory Usage | ||||
| swap		- Swap Usage (including paging activity) | ||||
| loadavg		- Load average (including nr_running, nr_tasks, last_pid) | ||||
| uptime		- Uptime and Idle time, can be calculated from CPU usage | ||||
|  | ||||
| SYS V IPC Limits: | ||||
|  | ||||
| shm_limits	- Shared Memory Limits | ||||
| msg_limits	- Message Queue Limits | ||||
| sem_limits	- Semaphore Set Limits | ||||
|  | ||||
| Network: | ||||
|  | ||||
| netload		- Network load | ||||
| ppp		- PPP statistics | ||||
|  | ||||
| Process List: | ||||
|  | ||||
| proclist	- List of processes | ||||
|  | ||||
| Process information: | ||||
|  | ||||
| proc_state	- cmd, state, uid, gid | ||||
| proc_uid	- uid,euid,gid,egid,pid,ppid,pgrp | ||||
| 		  session,tty,tpgid,priority,nice | ||||
| proc_mem	- size,vsize,resident,share,rss,rss_rlim | ||||
| proc_time	- start_time,rtime,utime,stime,cutime,cstime | ||||
| 		  timeout,it_real_value,frequency | ||||
| proc_signal	- signal,blocked,sigignore,sigcatch | ||||
| proc_kernel	- k_flags,min_flt,maj_flt,cmin_flt,cmaj_flt | ||||
| 		  kstk_esp,kstk_eip,nwchan,wchan | ||||
| proc_segment	- text_rss,shlib_rss,data_rss,stack_rss,dirty_size | ||||
| 		  start_code,end_code,start_stack | ||||
|  | ||||
| Process maps: | ||||
|  | ||||
| proc_args	- Command line arguments | ||||
| proc_map	- Process map (/proc/<pid>/maps under Linux) | ||||
|  | ||||
| File system usage: | ||||
|  | ||||
| mountlist	- List of currently mounted filesystems | ||||
| fsusage		- File system usage | ||||
|  | ||||
| PORTABILITY: | ||||
| ----------- | ||||
|  | ||||
| LibGTop is designed to be as portable as possible. None of the | ||||
| functions and retrieved information should be specific to a specific | ||||
| operating system. So you only need to port the system dependent part | ||||
| of the library to a new system and all application programs can then | ||||
| use libgtop on this new system. | ||||
|  | ||||
| CLIENT/SERVER MODEL: | ||||
| ------------------- | ||||
|  | ||||
| Some systems like DEC OSF/1 or BSD require special privileges for the | ||||
| calling process to fetch the required information (SUID root/SGID | ||||
| kmem). To solve this problem, I designed a client/server model which | ||||
| makes a call to a SUID/SGID server which fetches the required | ||||
| information whenever it is required. This server is only called for | ||||
| features that really require privileges, otherwise the sysdeps code | ||||
| is called directory (every user can get the CPU usage on DEC OSF/1, | ||||
| but only root can get information about processes other than the | ||||
| current one). | ||||
|  | ||||
| There is also some kind of daemon which can be used to fetch | ||||
| information from remote systems (still experimental). This daemon | ||||
| normally runs as nobody and calls the SUID/SGID itself when needed. | ||||
|  | ||||
| LIBGTOP AND GNOME: | ||||
| ----------------- | ||||
|  | ||||
| Although LibGTop is part of the GNOME desktop environment, its main | ||||
| interface is totally independent from any particular desktop environment, | ||||
| so you can also use it as a standalone library in any piece of GPLed | ||||
| software which makes it also a valuable part of the GNU project. | ||||
|  | ||||
| LibGTop is currently used in various places in the GNOME Project, | ||||
| for instance in some of the applets in gnome-core and - of cause - | ||||
| this ultra-cool application called GTop ... | ||||
|  | ||||
| However, you need to give the configure.in script the `--without-gnome' | ||||
| parameter when you want to use LibGTop without GNOME (this is because, | ||||
| if you want to use it with GNOME, you need to compile it after the main | ||||
| GNOME libraries and I wanted to avoid getting unnecessary bug reports | ||||
| about this). | ||||
|  | ||||
| LIBGTOP AND GNOME - PART II: | ||||
| --------------------------- | ||||
|  | ||||
| LibGTop was tested with FreeBSD 3.0 but it should also work with | ||||
| FreeBSD 2.2.7, NetBSD and OpenBSD. | ||||
|  | ||||
| Unfortunately, I don't have the power and disk space to install all | ||||
| possible operating systems out there on my machine and test things myself, | ||||
| so I depend on people telling me whether it works and sending me bug | ||||
| reports and patches if not. | ||||
|  | ||||
| However, I consider FreeBSD, NetBSD and OpenBSD as supported systems for | ||||
| LibGTop and whenever I get bug reports I will do my best to fix them as | ||||
| quickly as possible. | ||||
|  | ||||
| PLATFORM SPECIFIC NOTES FOR LINUX: | ||||
| ================================== | ||||
|  | ||||
| [I am speaking of the Linux kernel here.] | ||||
|  | ||||
| Under Linux, LibGTop should work without problems and read everything | ||||
| from /proc. | ||||
|  | ||||
| LibGTop 0.25 also had an experimental kernel interface to read this | ||||
| information directly from the kernel with a system call - but I have | ||||
| currently dropped support for this as I am too busy with GNOME | ||||
| development to keep current with kernel hacking. | ||||
|  | ||||
| PLATFORM SPECIFIC NOTES FOR SOLARIS: | ||||
| ==================================== | ||||
|  | ||||
| The development branch of LibGTop (the 1.1.x series) has a first version | ||||
| of the Solaris port which works at least on Solaris 7. | ||||
|  | ||||
| If you are on a Solaris system and want to give it a try, just fetch the | ||||
| latest 1.1.x tarball from ftp://ftp.home-of-linux.org/pub/libgtop/1.1/ | ||||
| and try it out. | ||||
|  | ||||
| PLATFORM SPECIFIC NOTES FOR BSD: | ||||
| ================================= | ||||
|  | ||||
| There are a few caveats: | ||||
|  | ||||
| * You need to manually make the `$(prefix)/bin/libgtop_server' SGID to | ||||
|   kmem after installation and mount the /proc file system of FreeBSD | ||||
|   (/proc/<pid>/mem is used within kvm_uread ()). | ||||
|  | ||||
| * To get the filenames of the process maps displayed in GTop, you need | ||||
|   to configure with the `--with-libgtop-inodedb' option (you need GDBM | ||||
|   for this to work). | ||||
|  | ||||
|   You have then to create an inode database which is used to look up | ||||
|   filenames. This is done using the `mkinodedb' program which comes | ||||
|   along with libgtop. | ||||
|  | ||||
|   See the file src/inodedb/README for details: | ||||
|  | ||||
|   The `mkinodedb' program which is build in this directory takes two | ||||
|   command line arguments: the full pathname of the database to be | ||||
|   created and the name of a configuration file consisting of directory | ||||
|   and file names each on a line by itself - see `/etc/ld.so.conf' for | ||||
|   an example. | ||||
|  | ||||
|   Putting a directory name in this file means all regular files found | ||||
|   in this directory are included in the database, but it will not | ||||
|   recursively descend into subdirectories (for instance, we want | ||||
|   everything in `/usr/lib' but not every single file in `/usr/lib/sgml'). | ||||
|   You can also use filenames to include a single file. | ||||
|  | ||||
| Have fun, | ||||
|  | ||||
| Martin <martin@home-of-linux.org> | ||||
							
								
								
									
										50
									
								
								RELNOTES-1.1.x
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								RELNOTES-1.1.x
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,50 @@ | ||||
| RELEASE NOTES FOR LIBGTOP 1.1.2 | ||||
| =============================== | ||||
|  | ||||
| This is a snapshot release for Solaris users of October GNOME. It contains | ||||
| a first version of the Solaris port of LibGTop which works at least on | ||||
| Solaris 7. | ||||
|  | ||||
| Please use LibGTop 1.0.x if you're not on a Solaris system | ||||
| (look at the README file for details). | ||||
|  | ||||
| IMPORTANT CHANGES SINCE 1.0: | ||||
| ---------------------------- | ||||
|  | ||||
| * All `glibtop_get_<feature>_* ()' and all `glibtop_init_<feature>_* ()' | ||||
|   functions now have an `int' return value and return 0 on success and -1 | ||||
|   on failure. | ||||
|  | ||||
| * glibtop_cpu: Added `xcpu_flags' | ||||
|  | ||||
| * glibtop_proc_state: Changed `state' from char to unsigned and added | ||||
|     GLIBTOP_PROCESS_RUNNING, GLIBTOP_PROCESS_INTERRUPTIBLE, | ||||
|     GLIBTOP_PROCESS_UNINTERRUPTIBLE,  GLIBTOP_PROCESS_ZOMBIE, | ||||
|     GLIBTOP_PROCESS_STOPPED, GLIBTOP_PROCESS_SWAPPING constants for it. | ||||
|  | ||||
| * `GLIBTOP_MOUNTENTRY_LEN' and `GLIBTOP_MAX_GROUPS' are now defined in | ||||
|   <glibtop/limits.h> | ||||
|  | ||||
| * Removed the `GLIBTOP_SYSDEPS_FEATURES' and `GLIBTOP_SYSDEPS_POINTER_SIZE' | ||||
|   constants from <glibtop/sysdeps.h> and let numbering start at zero for | ||||
|   `GLIBTOP_SYSDEPS_CPU'. | ||||
|  | ||||
| OTHER CHANGES SINCE 1.0: | ||||
| ----------------------- | ||||
|  | ||||
| * Use G_GNUC_UNUSED in <glibtop/error.h> to avoid compiler warnings. | ||||
|  | ||||
| * The `libgtop-config' script now accepts `--cflags', `--libs' and | ||||
|   `--extra-libs' parameter. | ||||
|  | ||||
| * The libraries are now called -lgtop-1.1 etc. so you can use 1.0.x and | ||||
|   1.1.x in parallel. | ||||
|  | ||||
| CHANGES SINCE 1.0 MAINLY INTERESTING FOR DEVELOPERS: | ||||
| --------------------------------------------------- | ||||
|  | ||||
| * We create a `glibtop-config.h' now which gets included from <glibtop.h> | ||||
|   when we're _IN_LIBGTOP. It contains things such as `u_int64_t' etc. | ||||
|  | ||||
| October 1999 | ||||
| Martin Baulig | ||||
							
								
								
									
										46
									
								
								TODO
									
									
									
									
									
								
							
							
						
						
									
										46
									
								
								TODO
									
									
									
									
									
								
							| @@ -1,46 +0,0 @@ | ||||
| This is LibGTop 0.99.2, | ||||
|  | ||||
| a feature-freezed version of LibGTop for GNOME 1.0. | ||||
|  | ||||
| You need to use the latest version of LibGTop from CVS for Gnome, it will | ||||
| no longer work with older releases. | ||||
|  | ||||
| Martin | ||||
|  | ||||
| -------------------------------------------------------------------------- | ||||
|  | ||||
| NOTE:  LibGTop is already feature-freezed for GNOME 1.0, so only bug fixes | ||||
|        are ok, no API changes ! | ||||
|  | ||||
| Sysdeps directory 'linux': | ||||
| ========================== | ||||
|  | ||||
| * Add implementation for `ppp' with modems. | ||||
|  | ||||
| Sysdeps directory 'freebsd': | ||||
| ============================ | ||||
|  | ||||
| * FreeBSD 3.0: It works fine on this system, so please make sure not | ||||
|                to break it here. | ||||
|  | ||||
| * FreeBSD 2.2: Make sure it still works here. | ||||
|  | ||||
| * NetBSD/OpenBSD: Support was added on Dec 6, but we need to check | ||||
|                   whether all data are valid. | ||||
|  | ||||
| Sysdeps directories 'kernel', 'osf1' and 'sun4': | ||||
| ================================================ | ||||
|  | ||||
| * You need to use the `--enable-hacker-mode' parameter to configure | ||||
|   to build this directories. | ||||
|  | ||||
| -------------------------------------------------------------------------- | ||||
|  | ||||
| Everything except sysdeps directories: | ||||
| ====================================== | ||||
|  | ||||
| * Ready for Gnome 1.0. [ALREADY FEATURE FREEZED] | ||||
|  | ||||
| January 5, 1999 | ||||
|  | ||||
| Martin | ||||
|   | ||||
| @@ -18,6 +18,7 @@ | ||||
|  | ||||
| #undef ENABLE_NLS | ||||
| #undef HAVE_CATGETS | ||||
| #undef GETTEXT_PACKAGE | ||||
| #undef HAVE_GETTEXT | ||||
| #undef HAVE_LC_MESSAGES | ||||
| #undef HAVE_STPCPY | ||||
| @@ -156,6 +157,14 @@ | ||||
|  */ | ||||
| #undef GLIBTOP_LINUX_VERSION_CODE | ||||
|  | ||||
| /* Solaris release code (eg. 251 for Solaris 2.5.1). */ | ||||
| #undef GLIBTOP_SOLARIS_RELEASE | ||||
|  | ||||
| /* Define if you want to use LibGTop without GNOME. */ | ||||
| #undef WITHOUT_GNOME | ||||
|  | ||||
| /* Define if you have the <procfs.h> header file */ | ||||
| #undef HAVE_PROCFS_H | ||||
|  | ||||
| /* Define if you have the <sys/procfs.h> header file */ | ||||
| #undef HAVE_SYS_PROCFS_H | ||||
|   | ||||
							
								
								
									
										880
									
								
								acinclude.m4
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										880
									
								
								acinclude.m4
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,880 @@ | ||||
| dnl This is just copied m4s from need-declaration.m4 gnome-fileutils.m4 | ||||
| dnl gnome-supprt-checks.m4 and a little from gnome-libgtop-check.m4 | ||||
| dnl and finally libgtop-sysdeps.m4 | ||||
|  | ||||
| dnl | ||||
| dnl LIBGTOP_CHECK_TYPE | ||||
| dnl | ||||
| dnl Improved version of AC_CHECK_TYPE which takes into account | ||||
| dnl that we need to #include some other header files on some | ||||
| dnl systems to get some types. | ||||
|  | ||||
| dnl AC_LIBGTOP_CHECK_TYPE(TYPE, DEFAULT) | ||||
| AC_DEFUN([AC_LIBGTOP_CHECK_TYPE], | ||||
| [AC_REQUIRE([AC_HEADER_STDC])dnl | ||||
| AC_MSG_CHECKING(for $1) | ||||
| AC_CACHE_VAL(ac_cv_type_$1, | ||||
| [AC_EGREP_CPP(dnl | ||||
| changequote(<<,>>)dnl | ||||
| <<(^|[^a-zA-Z_0-9])$1[^a-zA-Z_0-9]>>dnl | ||||
| changequote([,]), [#include <sys/types.h> | ||||
| #if STDC_HEADERS | ||||
| #include <stdlib.h> | ||||
| #include <stddef.h> | ||||
| #endif | ||||
|  | ||||
| /* For Tru64 */ | ||||
| #ifdef HAVE_SYS_BITYPES_H | ||||
| #include <sys/bitypes.h> | ||||
| #endif | ||||
| ], ac_cv_type_$1=yes, ac_cv_type_$1=no)])dnl | ||||
| AC_MSG_RESULT($ac_cv_type_$1) | ||||
| if test $ac_cv_type_$1 = no; then | ||||
|   AC_DEFINE($1, $2) | ||||
| fi | ||||
| ]) | ||||
|  | ||||
| dnl | ||||
| dnl GNOME_LIBGTOP_TYPES | ||||
| dnl | ||||
| dnl some typechecks for libgtop. | ||||
| dnl | ||||
|  | ||||
| AC_DEFUN([GNOME_LIBGTOP_TYPES], | ||||
| [ | ||||
|         AC_CHECK_HEADERS(sys/bitypes.h) | ||||
|         AC_LIBGTOP_CHECK_TYPE(u_int64_t, unsigned long long int) | ||||
|         AC_LIBGTOP_CHECK_TYPE(int64_t, signed long long int) | ||||
| ]) | ||||
|  | ||||
| dnl See whether we need a declaration for a function. | ||||
| dnl GCC_NEED_DECLARATION(FUNCTION [, EXTRA-HEADER-FILES]) | ||||
| AC_DEFUN([GCC_NEED_DECLARATION], | ||||
| [AC_MSG_CHECKING([whether $1 must be declared]) | ||||
| AC_CACHE_VAL(gcc_cv_decl_needed_$1, | ||||
| [AC_TRY_COMPILE([ | ||||
| #include <stdio.h> | ||||
| #ifdef HAVE_STRING_H | ||||
| #include <string.h> | ||||
| #else | ||||
| #ifdef HAVE_STRINGS_H | ||||
| #include <strings.h> | ||||
| #endif | ||||
| #endif | ||||
| #ifdef HAVE_STDLIB_H | ||||
| #include <stdlib.h> | ||||
| #endif | ||||
| #ifdef HAVE_UNISTD_H | ||||
| #include <unistd.h> | ||||
| #endif | ||||
| $2], | ||||
| [char *(*pfn) = (char *(*)) $1], | ||||
| eval "gcc_cv_decl_needed_$1=no", eval "gcc_cv_decl_needed_$1=yes")]) | ||||
| if eval "test \"`echo '$gcc_cv_decl_needed_'$1`\" = yes"; then | ||||
|   AC_MSG_RESULT(yes) | ||||
|   gcc_need_declarations="$gcc_need_declarations $1" | ||||
|   gcc_tr_decl=NEED_DECLARATION_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` | ||||
|   AC_DEFINE_UNQUOTED($gcc_tr_decl) | ||||
| else | ||||
|   AC_MSG_RESULT(no) | ||||
| fi | ||||
| ])dnl | ||||
|  | ||||
| dnl Check multiple functions to see whether each needs a declaration. | ||||
| dnl GCC_NEED_DECLARATIONS(FUNCTION... [, EXTRA-HEADER-FILES]) | ||||
| AC_DEFUN([GCC_NEED_DECLARATIONS], | ||||
| [for ac_func in $1 | ||||
| do | ||||
| GCC_NEED_DECLARATION($ac_func, $2) | ||||
| done | ||||
| ] | ||||
| ) | ||||
|  | ||||
| dnl | ||||
| dnl GNOME_FILEUTILS_CHECKS | ||||
| dnl | ||||
| dnl checks that are needed for the diskusage applet. | ||||
| dnl | ||||
|  | ||||
| AC_DEFUN([GNOME_FILEUTILS_CHECKS], | ||||
| [ | ||||
| AC_CHECK_HEADERS(fcntl.h sys/param.h sys/statfs.h sys/fstyp.h \ | ||||
| mnttab.h mntent.h sys/statvfs.h sys/vfs.h sys/mount.h \ | ||||
| sys/filsys.h sys/fs_types.h sys/fs/s5param.h) | ||||
|  | ||||
| AC_CHECK_FUNCS(bcopy endgrent endpwent fchdir ftime ftruncate \ | ||||
| getcwd getmntinfo gettimeofday isascii lchown \ | ||||
| listmntent memcpy mkfifo strchr strerror strrchr vprintf) | ||||
|  | ||||
| dnl Set some defaults when cross-compiling | ||||
|  | ||||
| if test x$cross_compiling = xyes ; then | ||||
|         case "$host_os" in | ||||
|         linux*) | ||||
|           fu_cv_sys_mounted_getmntent1=yes | ||||
|           fu_cv_sys_stat_statfs2_bsize=yes | ||||
|           ;; | ||||
|         sunos*) | ||||
|           fu_cv_sys_stat_statfs4=yes | ||||
|           ;; | ||||
|         freebsd*) | ||||
|           fu_cv_sys_stat_statfs2_bsize=yes | ||||
|           ;; | ||||
|         osf*) | ||||
|           fu_cv_sys_stat_statfs3_osf1=yes | ||||
|           ;; | ||||
|         esac | ||||
| fi | ||||
|  | ||||
| # Determine how to get the list of mounted filesystems. | ||||
| list_mounted_fs= | ||||
|  | ||||
| # If the getmntent function is available but not in the standard library, | ||||
| # make sure LIBS contains -lsun (on Irix4) or -lseq (on PTX). | ||||
| AC_FUNC_GETMNTENT | ||||
|  | ||||
| # This test must precede the ones for getmntent because Unicos-9 is | ||||
| # reported to have the getmntent function, but its support is incompatible | ||||
| # with other getmntent implementations. | ||||
|  | ||||
| # NOTE: Normally, I wouldn't use a check for system type as I've done for | ||||
| # `CRAY' below since that goes against the whole autoconf philosophy.  But | ||||
| # I think there is too great a chance that some non-Cray system has a | ||||
| # function named listmntent to risk the false positive. | ||||
|  | ||||
| if test -z "$list_mounted_fs"; then | ||||
| # Cray UNICOS 9 | ||||
| AC_MSG_CHECKING([for listmntent of Cray/Unicos-9]) | ||||
| AC_CACHE_VAL(fu_cv_sys_mounted_cray_listmntent, | ||||
| [fu_cv_sys_mounted_cray_listmntent=no | ||||
| AC_EGREP_CPP(yes, | ||||
| [#ifdef _CRAY | ||||
| yes | ||||
| #endif | ||||
| ], [test $ac_cv_func_listmntent = yes \ | ||||
| && fu_cv_sys_mounted_cray_listmntent=yes] | ||||
| ) | ||||
| ] | ||||
| ) | ||||
| AC_MSG_RESULT($fu_cv_sys_mounted_cray_listmntent) | ||||
| if test $fu_cv_sys_mounted_cray_listmntent = yes; then | ||||
| list_mounted_fs=found | ||||
| AC_DEFINE(MOUNTED_LISTMNTENT) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| if test $ac_cv_func_getmntent = yes; then | ||||
|  | ||||
| # This system has the getmntent function. | ||||
| # Determine whether it's the one-argument variant or the two-argument one. | ||||
|  | ||||
| if test -z "$list_mounted_fs"; then | ||||
| # 4.3BSD, SunOS, HP-UX, Dynix, Irix | ||||
| AC_MSG_CHECKING([for one-argument getmntent function]) | ||||
| AC_CACHE_VAL(fu_cv_sys_mounted_getmntent1, | ||||
| [test $ac_cv_header_mntent_h = yes \ | ||||
| && fu_cv_sys_mounted_getmntent1=yes \ | ||||
| || fu_cv_sys_mounted_getmntent1=no]) | ||||
| AC_MSG_RESULT($fu_cv_sys_mounted_getmntent1) | ||||
| if test $fu_cv_sys_mounted_getmntent1 = yes; then | ||||
| list_mounted_fs=found | ||||
| AC_DEFINE(MOUNTED_GETMNTENT1) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| if test -z "$list_mounted_fs"; then | ||||
| # SVR4 | ||||
| AC_MSG_CHECKING([for two-argument getmntent function]) | ||||
| AC_CACHE_VAL(fu_cv_sys_mounted_getmntent2, | ||||
| [AC_EGREP_HEADER(getmntent, sys/mnttab.h, | ||||
| fu_cv_sys_mounted_getmntent2=yes, | ||||
| fu_cv_sys_mounted_getmntent2=no)]) | ||||
| AC_MSG_RESULT($fu_cv_sys_mounted_getmntent2) | ||||
| if test $fu_cv_sys_mounted_getmntent2 = yes; then | ||||
| list_mounted_fs=found | ||||
| AC_DEFINE(MOUNTED_GETMNTENT2) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| if test -z "$list_mounted_fs"; then | ||||
| AC_MSG_ERROR([could not determine how to read list of mounted filesystems]) | ||||
| fi | ||||
|  | ||||
| fi | ||||
|  | ||||
| if test -z "$list_mounted_fs"; then | ||||
| # DEC Alpha running OSF/1. | ||||
| AC_MSG_CHECKING([for getfsstat function]) | ||||
| AC_CACHE_VAL(fu_cv_sys_mounted_getsstat, | ||||
| [AC_TRY_LINK([ | ||||
| #include <sys/types.h> | ||||
| #include <sys/mount.h> | ||||
| #include <sys/fs_types.h>], | ||||
| [struct statfs *stats; | ||||
| int numsys = getfsstat ((struct statfs *)0, 0L, MNT_WAIT); ], | ||||
| fu_cv_sys_mounted_getsstat=yes, | ||||
| fu_cv_sys_mounted_getsstat=no)]) | ||||
| AC_MSG_RESULT($fu_cv_sys_mounted_getsstat) | ||||
| if test $fu_cv_sys_mounted_getsstat = yes; then | ||||
| list_mounted_fs=found | ||||
| AC_DEFINE(MOUNTED_GETFSSTAT) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| if test -z "$list_mounted_fs"; then | ||||
| # AIX. | ||||
| AC_MSG_CHECKING([for mntctl function and struct vmount]) | ||||
| AC_CACHE_VAL(fu_cv_sys_mounted_vmount, | ||||
| [AC_TRY_CPP([#include <fshelp.h>], | ||||
| fu_cv_sys_mounted_vmount=yes, | ||||
| fu_cv_sys_mounted_vmount=no)]) | ||||
| AC_MSG_RESULT($fu_cv_sys_mounted_vmount) | ||||
| if test $fu_cv_sys_mounted_vmount = yes; then | ||||
| list_mounted_fs=found | ||||
| AC_DEFINE(MOUNTED_VMOUNT) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| if test -z "$list_mounted_fs"; then | ||||
| # SVR3 | ||||
| AC_MSG_CHECKING([for FIXME existence of three headers]) | ||||
| AC_CACHE_VAL(fu_cv_sys_mounted_fread_fstyp, | ||||
| [AC_TRY_CPP([ | ||||
| #include <sys/statfs.h> | ||||
| #include <sys/fstyp.h> | ||||
| #include <mnttab.h>], | ||||
| fu_cv_sys_mounted_fread_fstyp=yes, | ||||
| fu_cv_sys_mounted_fread_fstyp=no)]) | ||||
| AC_MSG_RESULT($fu_cv_sys_mounted_fread_fstyp) | ||||
| if test $fu_cv_sys_mounted_fread_fstyp = yes; then | ||||
| list_mounted_fs=found | ||||
| AC_DEFINE(MOUNTED_FREAD_FSTYP) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| if test -z "$list_mounted_fs"; then | ||||
| # 4.4BSD and DEC OSF/1. | ||||
| AC_MSG_CHECKING([for getmntinfo function]) | ||||
| AC_CACHE_VAL(fu_cv_sys_mounted_getmntinfo, | ||||
| [ | ||||
| ok= | ||||
| if test $ac_cv_func_getmntinfo = yes; then | ||||
| AC_EGREP_HEADER(f_type;, sys/mount.h, | ||||
| ok=yes) | ||||
| fi | ||||
| test -n "$ok" \ | ||||
| && fu_cv_sys_mounted_getmntinfo=yes \ | ||||
| || fu_cv_sys_mounted_getmntinfo=no | ||||
| ]) | ||||
| AC_MSG_RESULT($fu_cv_sys_mounted_getmntinfo) | ||||
| if test $fu_cv_sys_mounted_getmntinfo = yes; then | ||||
| list_mounted_fs=found | ||||
| AC_DEFINE(MOUNTED_GETMNTINFO) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| # FIXME: add a test for netbsd-1.1 here | ||||
|  | ||||
| if test -z "$list_mounted_fs"; then | ||||
| # Ultrix | ||||
| AC_MSG_CHECKING([for getmnt function]) | ||||
| AC_CACHE_VAL(fu_cv_sys_mounted_getmnt, | ||||
| [AC_TRY_CPP([ | ||||
| #include <sys/fs_types.h> | ||||
| #include <sys/mount.h>], | ||||
| fu_cv_sys_mounted_getmnt=yes, | ||||
| fu_cv_sys_mounted_getmnt=no)]) | ||||
| AC_MSG_RESULT($fu_cv_sys_mounted_getmnt) | ||||
| if test $fu_cv_sys_mounted_getmnt = yes; then | ||||
| list_mounted_fs=found | ||||
| AC_DEFINE(MOUNTED_GETMNT) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| if test -z "$list_mounted_fs"; then | ||||
| # SVR2 | ||||
| AC_MSG_CHECKING([whether it is possible to resort to fread on /etc/mnttab]) | ||||
| AC_CACHE_VAL(fu_cv_sys_mounted_fread, | ||||
| [AC_TRY_CPP([#include <mnttab.h>], | ||||
| fu_cv_sys_mounted_fread=yes, | ||||
| fu_cv_sys_mounted_fread=no)]) | ||||
| AC_MSG_RESULT($fu_cv_sys_mounted_fread) | ||||
| if test $fu_cv_sys_mounted_fread = yes; then | ||||
| list_mounted_fs=found | ||||
| AC_DEFINE(MOUNTED_FREAD) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| if test -z "$list_mounted_fs"; then | ||||
| AC_MSG_ERROR([could not determine how to read list of mounted filesystems]) | ||||
| # FIXME -- no need to abort building the whole package | ||||
| # Cannot build mountlist.c or anything that needs its functions | ||||
| fi | ||||
|  | ||||
| AC_CHECKING(how to get filesystem space usage) | ||||
| space=no | ||||
|  | ||||
| # Perform only the link test since it seems there are no variants of the | ||||
| # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs) | ||||
| # because that got a false positive on SCO OSR5.  Adding the declaration | ||||
| # of a `struct statvfs' causes this test to fail (as it should) on such | ||||
| # systems.  That system is reported to work fine with STAT_STATFS4 which | ||||
| # is what it gets when this test fails. | ||||
| if test $space = no; then | ||||
| # SVR4 | ||||
| AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs, | ||||
| [AC_TRY_LINK([#include <sys/types.h> | ||||
| #include <sys/statvfs.h>], | ||||
| [struct statvfs fsd; statvfs (0, &fsd);], | ||||
| fu_cv_sys_stat_statvfs=yes, | ||||
| fu_cv_sys_stat_statvfs=no)]) | ||||
| if test $fu_cv_sys_stat_statvfs = yes; then | ||||
| space=yes | ||||
| AC_DEFINE(STAT_STATVFS) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| if test $space = no; then | ||||
| # DEC Alpha running OSF/1 | ||||
| AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)]) | ||||
| AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1, | ||||
| [AC_TRY_RUN([ | ||||
| #include <sys/param.h> | ||||
| #include <sys/types.h> | ||||
| #include <sys/mount.h> | ||||
| int main () | ||||
| { | ||||
| struct statfs fsd; | ||||
| fsd.f_fsize = 0; | ||||
| return (statfs (".", &fsd, sizeof (struct statfs))); | ||||
| }], | ||||
| fu_cv_sys_stat_statfs3_osf1=yes, | ||||
| fu_cv_sys_stat_statfs3_osf1=no, | ||||
| fu_cv_sys_stat_statfs3_osf1=no)]) | ||||
| AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1) | ||||
| if test $fu_cv_sys_stat_statfs3_osf1 = yes; then | ||||
| space=yes | ||||
| AC_DEFINE(STAT_STATFS3_OSF1) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| if test $space = no; then | ||||
| # AIX | ||||
| AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl | ||||
| member (AIX, 4.3BSD)]) | ||||
| AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize, | ||||
| [AC_TRY_RUN([ | ||||
| #ifdef HAVE_SYS_PARAM_H | ||||
| #include <sys/param.h> | ||||
| #endif | ||||
| #ifdef HAVE_SYS_MOUNT_H | ||||
| #include <sys/mount.h> | ||||
| #endif | ||||
| #ifdef HAVE_SYS_VFS_H | ||||
| #include <sys/vfs.h> | ||||
| #endif | ||||
| int main () | ||||
| { | ||||
| struct statfs fsd; | ||||
| fsd.f_bsize = 0; | ||||
| return (statfs (".", &fsd)); | ||||
| }], | ||||
| fu_cv_sys_stat_statfs2_bsize=yes, | ||||
| fu_cv_sys_stat_statfs2_bsize=no, | ||||
| fu_cv_sys_stat_statfs2_bsize=no)]) | ||||
| AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize) | ||||
| if test $fu_cv_sys_stat_statfs2_bsize = yes; then | ||||
| space=yes | ||||
| AC_DEFINE(STAT_STATFS2_BSIZE) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| if test $space = no; then | ||||
| # SVR3 | ||||
| AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)]) | ||||
| AC_CACHE_VAL(fu_cv_sys_stat_statfs4, | ||||
| [AC_TRY_RUN([#include <sys/types.h> | ||||
| #include <sys/statfs.h> | ||||
| int main () | ||||
| { | ||||
| struct statfs fsd; | ||||
| return (statfs (".", &fsd, sizeof fsd, 0)); | ||||
| }], | ||||
| fu_cv_sys_stat_statfs4=yes, | ||||
| fu_cv_sys_stat_statfs4=no, | ||||
| fu_cv_sys_stat_statfs4=no)]) | ||||
| AC_MSG_RESULT($fu_cv_sys_stat_statfs4) | ||||
| if test $fu_cv_sys_stat_statfs4 = yes; then | ||||
| space=yes | ||||
| AC_DEFINE(STAT_STATFS4) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| if test $space = no; then | ||||
| # 4.4BSD and NetBSD | ||||
| AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl | ||||
| member (4.4BSD and NetBSD)]) | ||||
| AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize, | ||||
| [AC_TRY_RUN([#include <sys/types.h> | ||||
| #ifdef HAVE_SYS_PARAM_H | ||||
| #include <sys/param.h> | ||||
| #endif | ||||
| #ifdef HAVE_SYS_MOUNT_H | ||||
| #include <sys/mount.h> | ||||
| #endif | ||||
| int main () | ||||
| { | ||||
| struct statfs fsd; | ||||
| fsd.f_fsize = 0; | ||||
| return (statfs (".", &fsd)); | ||||
| }], | ||||
| fu_cv_sys_stat_statfs2_fsize=yes, | ||||
| fu_cv_sys_stat_statfs2_fsize=no, | ||||
| fu_cv_sys_stat_statfs2_fsize=no)]) | ||||
| AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize) | ||||
| if test $fu_cv_sys_stat_statfs2_fsize = yes; then | ||||
| space=yes | ||||
| AC_DEFINE(STAT_STATFS2_FSIZE) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| if test $space = no; then | ||||
| # Ultrix | ||||
| AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)]) | ||||
| AC_CACHE_VAL(fu_cv_sys_stat_fs_data, | ||||
| [AC_TRY_RUN([#include <sys/types.h> | ||||
| #ifdef HAVE_SYS_PARAM_H | ||||
| #include <sys/param.h> | ||||
| #endif | ||||
| #ifdef HAVE_SYS_MOUNT_H | ||||
| #include <sys/mount.h> | ||||
| #endif | ||||
| #ifdef HAVE_SYS_FS_TYPES_H | ||||
| #include <sys/fs_types.h> | ||||
| #endif | ||||
| int main () | ||||
| { | ||||
| struct fs_data fsd; | ||||
| /* Ultrix's statfs returns 1 for success, | ||||
| 0 for not mounted, -1 for failure.  */ | ||||
| return (statfs (".", &fsd) != 1); | ||||
| }], | ||||
| fu_cv_sys_stat_fs_data=yes, | ||||
| fu_cv_sys_stat_fs_data=no, | ||||
| fu_cv_sys_stat_fs_data=no)]) | ||||
| AC_MSG_RESULT($fu_cv_sys_stat_fs_data) | ||||
| if test $fu_cv_sys_stat_fs_data = yes; then | ||||
| space=yes | ||||
| AC_DEFINE(STAT_STATFS2_FS_DATA) | ||||
| fi | ||||
| fi | ||||
|  | ||||
| if test $space = no; then | ||||
| # SVR2 | ||||
| AC_TRY_CPP([#include <sys/filsys.h>], | ||||
| AC_DEFINE(STAT_READ_FILSYS) space=yes) | ||||
| fi | ||||
|  | ||||
| if test -n "$list_mounted_fs" && test $space != no; then | ||||
| DF_PROG="df" | ||||
| # AC_LIBOBJ(fsusage) | ||||
| # AC_LIBOBJ(mountlist) | ||||
| fi | ||||
|  | ||||
| # Check for SunOS statfs brokenness wrt partitions 2GB and larger. | ||||
| # If <sys/vfs.h> exists and struct statfs has a member named f_spare, | ||||
| # enable the work-around code in fsusage.c. | ||||
| AC_MSG_CHECKING([for statfs that truncates block counts]) | ||||
| AC_CACHE_VAL(fu_cv_sys_truncating_statfs, | ||||
| [AC_TRY_COMPILE([ | ||||
| #if !defined(sun) && !defined(__sun) | ||||
| choke -- this is a workaround for a Sun-specific problem | ||||
| #endif | ||||
| #include <sys/types.h> | ||||
| #include <sys/vfs.h>], | ||||
| [struct statfs t; long c = *(t.f_spare);], | ||||
| fu_cv_sys_truncating_statfs=yes, | ||||
| fu_cv_sys_truncating_statfs=no, | ||||
| )]) | ||||
| if test $fu_cv_sys_truncating_statfs = yes; then | ||||
| AC_DEFINE(STATFS_TRUNCATES_BLOCK_COUNTS) | ||||
| fi | ||||
| AC_MSG_RESULT($fu_cv_sys_truncating_statfs) | ||||
|  | ||||
| AC_CHECKING(for AFS) | ||||
| test -d /afs && AC_DEFINE(AFS) | ||||
| ]) | ||||
|  | ||||
| dnl GNOME_SUPPORT_CHECKS | ||||
| dnl    Check for various support functions needed by the standard | ||||
| dnl    Gnome libraries.  Sets LIBOBJS, might define some macros. | ||||
| dnl    This should only be used when building the Gnome libs;  | ||||
| dnl    Gnome clients should not need this macro. | ||||
| AC_DEFUN([GNOME_SUPPORT_CHECKS],[ | ||||
|   # we need an `awk' to build `gnomesupport.h' | ||||
|   AC_REQUIRE([AC_PROG_AWK]) | ||||
|  | ||||
|   # this should go away soon | ||||
|   need_gnome_support=yes | ||||
|  | ||||
|   AC_CHECK_FUNCS(getopt_long,, | ||||
|    [AC_LIBOBJ(getopt) | ||||
|     AC_LIBOBJ(getopt1)]) | ||||
|  | ||||
|   # for `scandir' | ||||
|   AC_HEADER_DIRENT | ||||
|  | ||||
|   # copied from `configure.in' of `libiberty' | ||||
|   vars="program_invocation_short_name program_invocation_name sys_errlist" | ||||
|   for v in $vars; do | ||||
|     AC_MSG_CHECKING([for $v]) | ||||
|     AC_CACHE_VAL(gnome_cv_var_$v, | ||||
|       [AC_TRY_LINK([int *p;], [extern int $v; p = &$v;], | ||||
| 		   [eval "gnome_cv_var_$v=yes"], | ||||
| 		   [eval "gnome_cv_var_$v=no"])]) | ||||
|     if eval "test \"`echo '$gnome_cv_var_'$v`\" = yes"; then | ||||
|       AC_MSG_RESULT(yes) | ||||
|       n=HAVE_`echo $v | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` | ||||
|       AC_DEFINE_UNQUOTED($n) | ||||
|     else | ||||
|       AC_MSG_RESULT(no) | ||||
|     fi | ||||
|   done | ||||
|  | ||||
|   AC_REPLACE_FUNCS(memmove mkstemp scandir strcasecmp strerror strndup strnlen) | ||||
|   AC_REPLACE_FUNCS(strtok_r strtod strtol strtoul vasprintf vsnprintf) | ||||
|  | ||||
|   AC_CHECK_FUNCS(realpath,,AC_LIBOBJ(canonicalize)) | ||||
|  | ||||
|   # to include `error.c' error.c has some HAVE_* checks | ||||
|   AC_CHECK_FUNCS(vprintf doprnt strerror_r) | ||||
|   # stolen from am_func_error_at_line | ||||
|   AC_CACHE_CHECK([for error_at_line], am_cv_lib_error_at_line, | ||||
|   [AC_TRY_LINK([],[error_at_line(0, 0, "", 0, "");], | ||||
|               am_cv_lib_error_at_line=yes, | ||||
|               am_cv_lib_error_at_line=no)]) | ||||
|   if test $am_cv_lib_error_at_line = no; then | ||||
|     AC_LIBOBJ(error) | ||||
|   fi | ||||
|    | ||||
|   # This is required if we declare setreuid () and setregid (). | ||||
|   AC_TYPE_UID_T | ||||
|  | ||||
|   # see if we need to declare some functions.  Solaris is notorious for | ||||
|   # putting functions into the `libc' but not listing them in the headers | ||||
|   AC_CHECK_HEADERS(string.h strings.h stdlib.h unistd.h dirent.h) | ||||
|   GCC_NEED_DECLARATIONS(gethostname setreuid setregid getpagesize) | ||||
|   GCC_NEED_DECLARATION(scandir,[ | ||||
| #ifdef HAVE_DIRENT_H | ||||
| #include <dirent.h> | ||||
| #endif | ||||
| ]) | ||||
|  | ||||
|   AC_SUBST(need_gnome_support) | ||||
|  | ||||
|   AM_CONDITIONAL(BUILD_GNOME_SUPPORT, test "$need_gnome_support" = yes) | ||||
| ]) | ||||
|  | ||||
|  | ||||
| dnl This file is intended for use both internally in libgtop and in every program | ||||
| dnl that wants to use it. | ||||
| dnl | ||||
| dnl It defines the following variables: | ||||
| dnl | ||||
| dnl * 'libgtop_sysdeps_dir'    - sysdeps dir for libgtop. | ||||
| dnl * 'libgtop_use_machine_h'  - some of system dependend parts of libgtop provide | ||||
| dnl                              their own header file. In this case we need to | ||||
| dnl                              define 'HAVE_GLIBTOP_MACHINE_H'. | ||||
| dnl * 'libgtop_need_server'    - is the server really needed? Defines 'NEED_LIBGTOP' | ||||
| dnl                              if true; defines conditional 'NEED_LIBGTOP'. | ||||
|  | ||||
| AC_DEFUN([LIBGTOP_HACKER_TESTS],[ | ||||
| 	AC_REQUIRE([AC_CANONICAL_HOST]) | ||||
|  | ||||
| 	AC_ARG_WITH(linux-table, | ||||
|       [  --with-linux-table      Use the table () function from Martin Baulig], | ||||
| 	[linux_table="$withval"],[linux_table=auto]) | ||||
| 	case "$host_os" in | ||||
| 	linux*) | ||||
| 	  if test $linux_table = yes ; then | ||||
| 	    AC_CHECK_HEADER(linux/table.h, linux_table=yes, linux_table=no) | ||||
| 	  elif test $linux_table = auto ; then | ||||
| 	    AC_MSG_CHECKING(for table function in Linux Kernel) | ||||
| 	    AC_TRY_RUN([ | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
|  | ||||
| #include <unistd.h> | ||||
| #include <linux/unistd.h> | ||||
| #include <linux/table.h> | ||||
|  | ||||
| #include <syscall.h> | ||||
|  | ||||
| static inline _syscall3 (int, table, int, type, union table *, tbl, const void *, param); | ||||
|  | ||||
| int | ||||
| main (void) | ||||
| { | ||||
| 	union table tbl; | ||||
| 	int ret; | ||||
|  | ||||
| 	ret = table (TABLE_VERSION, NULL, NULL); | ||||
|  | ||||
| 	if (ret == -1) | ||||
| 		exit (-errno); | ||||
|  | ||||
| 	exit (ret < 1 ? ret : 0); | ||||
| } | ||||
| ], linux_table=yes, linux_table=no, linux_table=no) | ||||
| 	    AC_MSG_RESULT($linux_table) | ||||
| 	  fi | ||||
| 	  if test $linux_table = yes ; then | ||||
| 	    AC_DEFINE(HAVE_LINUX_TABLE) | ||||
| 	  fi | ||||
| 	  ;; | ||||
| 	esac | ||||
| ]) | ||||
|  | ||||
| AC_DEFUN([GNOME_LIBGTOP_SYSDEPS],[ | ||||
| 	AC_REQUIRE([AC_CANONICAL_HOST]) | ||||
|  | ||||
| 	AC_SUBST(libgtop_sysdeps_dir) | ||||
| 	AC_SUBST(libgtop_use_machine_h) | ||||
| 	AC_SUBST(libgtop_need_server) | ||||
|  | ||||
| 	AC_ARG_WITH(libgtop-examples, | ||||
| 	[  --with-libgtop-examples Build the libgtop examples (default=no)],[ | ||||
| 	build_examples="$withval"], [build_examples=no]) | ||||
|  | ||||
| 	AM_CONDITIONAL(EXAMPLES, test x"$build_examples" = xyes) | ||||
|  | ||||
| 	AC_ARG_ENABLE(hacker-mode, | ||||
| 	[  --enable-hacker-mode    Enable building of unstable sysdeps], | ||||
| 	[hacker_mode="$enableval"], [hacker_mode=no]) | ||||
|  | ||||
| 	AM_CONDITIONAL(HACKER_MODE, test x"$hacker_mode" = xyes) | ||||
|  | ||||
| 	linux_table=auto | ||||
| 	if test x$hacker_mode = xyes ; then | ||||
| 	  LIBGTOP_HACKER_TESTS | ||||
| 	fi | ||||
| 	AM_CONDITIONAL(LINUX_TABLE, test $linux_table = yes) | ||||
|  | ||||
| 	AC_ARG_WITH(libgtop-smp, | ||||
| 	[  --with-libgtop-smp      Enable SMP support (default-auto)],[ | ||||
| 	libgtop_smp="$withval"],[libgtop_smp=auto]) | ||||
|  | ||||
| 	if test $libgtop_smp = auto ; then | ||||
| 	  AC_MSG_CHECKING(whether to enable SMP support) | ||||
| 	  case "$host_os" in | ||||
| 	  linux*) | ||||
| 	    libgtop_smp=yes | ||||
| 	    ;; | ||||
| 	  aix*) | ||||
| 	    libgtop_smp=yes | ||||
| 	    ;; | ||||
| 	  *) | ||||
| 	    libgtop_smp=no | ||||
| 	    ;; | ||||
| 	  esac | ||||
| 	  AC_MSG_RESULT($libgtop_smp) | ||||
| 	fi | ||||
|  | ||||
| 	if test $libgtop_smp = yes ; then | ||||
| 	  AC_DEFINE(HAVE_LIBGTOP_SMP) | ||||
| 	fi | ||||
|  | ||||
| 	AM_CONDITIONAL(LIBGTOP_SMP, test $libgtop_smp = yes) | ||||
|  | ||||
| 	AC_MSG_CHECKING(for libgtop sysdeps directory) | ||||
|  | ||||
| 	case "$host_os" in | ||||
| 	linux*) | ||||
| 	  if test x$linux_table = xyes ; then | ||||
| 	    libgtop_sysdeps_dir=kernel | ||||
| 	    libgtop_use_machine_h=no | ||||
| 	  else | ||||
| 	    libgtop_sysdeps_dir=linux | ||||
| 	    libgtop_use_machine_h=no | ||||
| 	    libgtop_have_sysinfo=yes | ||||
| 	  fi | ||||
| 	  libgtop_need_server=no | ||||
| 	  ;; | ||||
| 	freebsd*|netbsd*|openbsd*|bsdi*) | ||||
| 	  libgtop_sysdeps_dir=freebsd | ||||
| 	  libgtop_use_machine_h=yes | ||||
| 	  libgtop_need_server=yes | ||||
| 	  libgtop_postinstall='chgrp kmem $(bindir)/libgtop_server && chmod 2755 $(bindir)/libgtop_server' | ||||
| 	  ;; | ||||
| 	solaris*) | ||||
| 	  libgtop_sysdeps_dir=solaris | ||||
| 	  libgtop_use_machine_h=yes | ||||
| 	  libgtop_need_server=yes | ||||
| 	  libgtop_postinstall='chgrp sys $(bindir)/libgtop_server && chmod 2755 $(bindir)/libgtop_server' | ||||
| 	  ;; | ||||
|         aix*) | ||||
| 	  libgtop_sysdeps_dir=aix | ||||
| 	  libgtop_use_machine_h=yes | ||||
| 	  libgtop_need_server=yes | ||||
| 	  libgtop_have_sysinfo=yes | ||||
| 	  libgtop_postinstall='chgrp system $(bindir)/libgtop_server && chmod g+s $(bindir)/libgtop_server2' | ||||
|           ;; | ||||
| 	*) | ||||
| 	  if test x$hacker_mode = xyes ; then | ||||
| 	    case "$host_os" in | ||||
| 	    sunos4*) | ||||
| 	      #Please note that this port is obsolete and not working at | ||||
| 	      #all. It is only useful for people who want to fix it ... :-) | ||||
| 	      libgtop_sysdeps_dir=sun4 | ||||
| 	      libgtop_use_machine_h=yes | ||||
| 	      libgtop_need_server=yes | ||||
| 	      ;; | ||||
| 	    osf*) | ||||
| 	      libgtop_sysdeps_dir=osf1 | ||||
| 	      libgtop_use_machine_h=yes | ||||
| 	      libgtop_need_server=yes | ||||
| 	      ;; | ||||
| 	    *) | ||||
| 	      libgtop_sysdeps_dir=stub | ||||
| 	      libgtop_use_machine_h=no | ||||
| 	      libgtop_need_server=no | ||||
| 	      ;; | ||||
| 	    esac | ||||
| 	  else | ||||
| 	    libgtop_sysdeps_dir=stub | ||||
| 	    libgtop_use_machine_h=no | ||||
| 	    libgtop_need_server=no | ||||
| 	  fi | ||||
| 	  ;; | ||||
| 	esac | ||||
|  | ||||
| 	test -z "$libgtop_postinstall" && libgtop_postinstall=: | ||||
|  | ||||
| 	AC_MSG_RESULT($libgtop_sysdeps_dir) | ||||
|  | ||||
| 	AC_SUBST(libgtop_sysdeps_dir) | ||||
| 	AC_SUBST(libgtop_postinstall) | ||||
| 	AC_SUBST(libgtop_have_sysinfo) | ||||
|  | ||||
| 	case "$host_os" in | ||||
| 	*bsd*) | ||||
| 	  AC_CHECK_HEADERS(net/if_var.h) | ||||
| 	  AC_MSG_CHECKING([for I4B]) | ||||
| 	  AC_TRY_COMPILE([ | ||||
| #include <sys/types.h> | ||||
| #include <sys/socket.h> | ||||
|  | ||||
| #include <net/if.h> | ||||
| #include <net/if_types.h> | ||||
|  | ||||
| #ifdef HAVE_NET_IF_VAR_H | ||||
| #include <net/if_var.h> | ||||
| #endif | ||||
|  | ||||
| #include <net/netisr.h> | ||||
| #include <net/route.h> | ||||
|  | ||||
| #if defined(__FreeBSD__) || defined(__NetBSD__) | ||||
| #include <net/if_sppp.h> | ||||
| #else | ||||
| #include <i4b/sppp/if_sppp.h> | ||||
| #endif | ||||
| ],[ | ||||
| 	size_t size = sizeof (struct sppp); | ||||
| ], have_i4b=yes, have_i4b=no) | ||||
| 	  AC_MSG_RESULT($have_i4b) | ||||
| 	  if test x$have_i4b = xyes; then | ||||
| 	    AC_DEFINE(HAVE_I4B) | ||||
| 	    AC_MSG_CHECKING([for I4B accounting]) | ||||
| 	    AC_TRY_COMPILE([ | ||||
| #include <sys/types.h> | ||||
| #include <sys/socket.h> | ||||
|  | ||||
| #include <net/if.h> | ||||
| #include <net/if_types.h> | ||||
|  | ||||
| #ifdef HAVE_NET_IF_VAR_H | ||||
| #include <net/if_var.h> | ||||
| #endif | ||||
|  | ||||
| #include <net/netisr.h> | ||||
| #include <net/route.h> | ||||
|  | ||||
| #if defined(__FreeBSD__) || defined(__NetBSD__) | ||||
| #include <net/if_sppp.h> | ||||
| #else | ||||
| #include <i4b/sppp/if_sppp.h> | ||||
| #endif | ||||
|  | ||||
| #include <machine/i4b_acct.h> | ||||
| ],[ | ||||
| 	size_t size = sizeof (struct i4bisppp_softc); | ||||
| ], have_i4b_acct=yes, have_i4b_acct=no) | ||||
| 	    AC_MSG_RESULT($have_i4b_acct) | ||||
| 	    if test x$have_i4b_acct = xyes ; then | ||||
| 	      AC_DEFINE(HAVE_I4B_ACCT) | ||||
| 	    else | ||||
| 	      AC_WARN([ | ||||
| *** I4B accounting disabled - you won't get any PPP statistics. | ||||
| *** Read "misc/i4b_acct.txt" in the LibGTop source directory | ||||
| *** to see how to enable it.]) | ||||
| 	    fi | ||||
| 	  fi | ||||
| 	  ;; | ||||
| 	linux*) | ||||
| 	  os_major_version=`uname -r | sed 's/-pre[[0-9]]*//' | \ | ||||
| 	    sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` | ||||
| 	  os_minor_version=`uname -r | sed 's/-pre[[0-9]]*//' | \ | ||||
| 	    sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` | ||||
| 	  os_micro_version=`uname -r | sed 's/-pre[[0-9]]*//' | \ | ||||
| 	    sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` | ||||
| 	  os_version_expr="$os_major_version 65536 * $os_minor_version 256 * + $os_micro_version + p q" | ||||
|  | ||||
| 	  AC_CHECK_HEADERS(linux/version.h, have_linux_version_h=yes, | ||||
| 	    have_linux_version_h=no) | ||||
|  | ||||
| 	  if test x$have_linux_version_h = xyes ; then | ||||
| 	    version_code=`cat /usr/include/linux/version.h | \ | ||||
| 	      grep \#define | grep LINUX_VERSION_CODE` | ||||
| 	    os_version_code=`echo $version_code | \ | ||||
| 	      sed 's/^.*LINUX_VERSION_CODE[[ \t]]*\([[0-9]]*\).*$/\1/'` | ||||
| 	  else | ||||
| 	    os_version_code=`echo "$os_version_expr" | dc` | ||||
| 	  fi | ||||
|  | ||||
| 	  AC_MSG_CHECKING(for Linux kernel version code) | ||||
| 	  AC_DEFINE_UNQUOTED(GLIBTOP_LINUX_VERSION_CODE, $os_version_code) | ||||
| 	  AC_MSG_RESULT($os_version_code) | ||||
| 	  ;; | ||||
| 	solaris*) | ||||
| 	  os_major_version=`uname -r | sed 's/\([[0-9]]*\).\([[0-9]]\)\.*\([[0-9]]*\)/\1/'` | ||||
| 	  os_minor_version=`uname -r | sed 's/\([[0-9]]*\).\([[0-9]]\)\.*\([[0-9]]*\)/\2/'` | ||||
| 	  os_micro_version=`uname -r | sed 's/\([[0-9]]*\).\([[0-9]]\)\.*\([[0-9]]*\)/\3/'` | ||||
| 	  test -z "$os_micro_version" && os_micro_version=0 | ||||
| 	  os_version_expr="$os_major_version 100 * $os_minor_version 10 * + $os_micro_version + p q" | ||||
| 	  os_version_code=`echo "$os_version_expr" | dc` | ||||
|  | ||||
| 	  AC_MSG_CHECKING(for Solaris release code) | ||||
| 	  AC_DEFINE_UNQUOTED(GLIBTOP_SOLARIS_RELEASE, $os_version_code) | ||||
| 	  AC_MSG_RESULT($os_version_code) | ||||
| 	  ;; | ||||
| 	esac | ||||
|  | ||||
| 	AC_MSG_CHECKING(for machine.h in libgtop sysdeps dir) | ||||
| 	AC_MSG_RESULT($libgtop_use_machine_h) | ||||
|  | ||||
| 	AC_MSG_CHECKING(whether we need libgtop) | ||||
| 	AC_MSG_RESULT($libgtop_need_server) | ||||
|  | ||||
| 	if test x$libgtop_need_server = xyes ; then | ||||
| 	  AC_DEFINE(NEED_LIBGTOP) | ||||
| 	fi | ||||
|  | ||||
| 	if test x$libgtop_use_machine_h = xyes ; then | ||||
| 	  AC_DEFINE(HAVE_GLIBTOP_MACHINE_H) | ||||
| 	fi | ||||
|  | ||||
| 	AM_CONDITIONAL(NEED_LIBGTOP, test x$libgtop_need_server = xyes) | ||||
| ]) | ||||
|  | ||||
|    | ||||
| @@ -14,4 +14,8 @@ PKG_NAME="Gnome Top Library" | ||||
|     exit 1 | ||||
| } | ||||
|  | ||||
| . $srcdir/macros/autogen.sh | ||||
| which gnome-autogen.sh || { | ||||
|     echo "You need to install gnome-common from the GNOME CVS" | ||||
|     exit 1 | ||||
| } | ||||
| USE_GNOME2_MACROS=1 . gnome-autogen.sh | ||||
|   | ||||
							
								
								
									
										5
									
								
								backends/.cvsignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								backends/.cvsignore
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| .deps | ||||
| .libs | ||||
| Makefile | ||||
| Makefile.in | ||||
| *.lo | ||||
							
								
								
									
										15
									
								
								backends/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								backends/Makefile.am
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| if NEED_LIBGTOP | ||||
| server_dir	= server | ||||
| else | ||||
| server_dir	= | ||||
| endif | ||||
|  | ||||
| if HAVE_SYSDEPS | ||||
| sysdeps_dir	= sysdeps | ||||
| else | ||||
| sysdeps_dir	= | ||||
| endif | ||||
|  | ||||
| SUBDIRS		= $(server_dir) $(sysdeps_dir) common | ||||
|  | ||||
| DIST_SUBDIRS	= server sysdeps common | ||||
							
								
								
									
										7
									
								
								backends/common/.cvsignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								backends/common/.cvsignore
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| .deps | ||||
| .libs | ||||
| Makefile | ||||
| Makefile.in | ||||
| *.lo | ||||
| *.la | ||||
| marshal.c | ||||
							
								
								
									
										42
									
								
								backends/common/ChangeLog
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								backends/common/ChangeLog
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,42 @@ | ||||
| 2000-11-26  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* glibtop-backend-private.h: Removed. | ||||
|  | ||||
| 	* backend-common.h: New files. | ||||
|  | ||||
| 	* backend-common.c (_open_common): Don't overwrite | ||||
| 	`backend->_priv'. | ||||
|  | ||||
| 2000-11-22  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* Makefile.am: Link libgtop_backend_common.la against | ||||
| 	$(top_builddir)/sysdeps/common/libgtop_common.la and | ||||
| 	$(top_builddir)/lib/libgtop_server.la. | ||||
|  | ||||
| 2000-02-22  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* backend-sysdeps.c (LibGTopBackendInfo): Call this | ||||
| 	`LibGTopBackendInfo_Common' when we don't use gmodule. | ||||
|  | ||||
| 2000-02-22  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* Makefile.am: Only install the libs in $(LIBGTOP_BACKEND_DIR) | ||||
| 	when we LIBGTOP_USE_GMODULE and in $(libdir) otherwise. | ||||
|  | ||||
| 2000-01-12  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* Makefile.am: Install everything in $(LIBGTOP_BACKEND_DIR). | ||||
|  | ||||
| 	* libgtop-common.backend: New file. | ||||
|  | ||||
| 	* backend-common.c (glibtop_backend_common): Renamed to | ||||
| 	`LibGTopBackendInfo'. | ||||
|  | ||||
| 2000-01-12  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	Initial version of the "glibtop-backend-common" backend. | ||||
|  | ||||
| 	* backend-common.c: New file. | ||||
| 	* glibtop-backend-private.h: New file. | ||||
| 	* marshal.pl: New file. Automatically creates `marshal.c'. | ||||
|  | ||||
							
								
								
									
										47
									
								
								backends/common/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								backends/common/Makefile.am
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,47 @@ | ||||
| LINK		= $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@ | ||||
|  | ||||
| INCLUDES	= @INCLUDES@ | ||||
|  | ||||
| backenddir	= @LIBGTOP_BACKEND_DIR@ | ||||
|  | ||||
| if LIBGTOP_USE_GMODULE | ||||
| backendlibdir	= $(backenddir) | ||||
| else | ||||
| backendlibdir	= $(libdir) | ||||
| endif | ||||
|  | ||||
| dynamic_ldflags	= @libgtop_dynamic_ldflags@ | ||||
|  | ||||
| backend_DATA = \ | ||||
| 	libgtop-common.backend | ||||
|  | ||||
| noinst_HEADERS = \ | ||||
| 	backend-common.h | ||||
|  | ||||
| backendlib_LTLIBRARIES = \ | ||||
| 	libgtop_backend_common.la | ||||
|  | ||||
| libgtop_backend_common_la_SOURCES = \ | ||||
| 	backend-common.c		\ | ||||
| 	marshal.c | ||||
|  | ||||
| libgtop_backend_common_la_LDFLAGS = \ | ||||
| 	$(LT_VERSION_INFO) $(dynamic_ldflags) | ||||
|  | ||||
| libgtop_backend_common_la_LIBADD = \ | ||||
| 	$(top_builddir)/sysdeps/common/libgtop_common.la	\ | ||||
| 	$(top_builddir)/lib/libgtop_server.la | ||||
|  | ||||
| BUILT_SOURCES = \ | ||||
| 	marshal.c | ||||
|  | ||||
| EXTRA_DIST = \ | ||||
| 	marshal.pl	\ | ||||
| 	libgtop-common.backend | ||||
|  | ||||
| CLEANFILES = $(BUILT_SOURCES) | ||||
|  | ||||
| marshal.c: marshal.pl $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl | ||||
| 	$(PERL) -I $(top_srcdir)/scripts $(srcdir)/marshal.pl < $(top_srcdir)/features.def > tmp-t | ||||
| 	mv tmp-t marshal.c | ||||
|  | ||||
							
								
								
									
										61
									
								
								backends/common/backend-common.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								backends/common/backend-common.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,61 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #include <backend-common.h> | ||||
|  | ||||
| static int | ||||
| _open_common (glibtop_server *, glibtop_backend *, u_int64_t, const char **); | ||||
|  | ||||
| static int | ||||
| _close_common (glibtop_server *, glibtop_backend *, void *closure); | ||||
|  | ||||
| extern glibtop_call_vector glibtop_backend_common_call_vector; | ||||
|  | ||||
| #ifdef LIBGTOP_USE_GMODULE | ||||
| glibtop_backend_info LibGTopBackendInfo = { | ||||
|     "glibtop-backend-common", _open_common, _close_common, | ||||
|     &glibtop_backend_common_call_vector | ||||
| }; | ||||
| #else | ||||
| glibtop_backend_info LibGTopBackendInfo_Common = { | ||||
|     "glibtop-backend-common", _open_common, _close_common, | ||||
|     &glibtop_backend_common_call_vector | ||||
| }; | ||||
| #endif | ||||
|  | ||||
| static int | ||||
| _open_common (glibtop_server *server, glibtop_backend *backend, | ||||
| 	      u_int64_t features, const char **backend_args) | ||||
| { | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| static int | ||||
| _close_common (glibtop_server *server, glibtop_backend *backend, | ||||
| 	       void *closure) | ||||
| { | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
							
								
								
									
										37
									
								
								backends/common/backend-common.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								backends/common/backend-common.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,37 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #ifndef __GLIBTOP_BACKEND_COMMON_H__ | ||||
| #define __GLIBTOP_BACKEND_COMMON_H__ | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/global.h> | ||||
|  | ||||
| #include <glibtop/open.h> | ||||
| #include <glibtop/xmalloc.h> | ||||
| #include <glibtop/glibtop-backend.h> | ||||
| #include <glibtop/glibtop-backend-info.h> | ||||
|  | ||||
| #endif | ||||
							
								
								
									
										13
									
								
								backends/common/libgtop-common.backend
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								backends/common/libgtop-common.backend
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | ||||
| <?xml version="1.0"?> <!-- -*-xml-*- --> | ||||
| <!DOCTYPE libgtop:backends SYSTEM 'libgtop-backends.dtd'> | ||||
| <libgtop:Backends xmlns:libgtop="http://www.home-of-linux.org/libgtop/1.1"> | ||||
|  | ||||
|   <libgtop:Backend> | ||||
|     <libgtop:Name>glibtop-backend-common</libgtop:Name> | ||||
|     <libgtop:Location> | ||||
|       <libgtop:LibtoolName>libgtop_backend_common.la</libgtop:LibtoolName> | ||||
|       <libgtop:ShlibName>libgtop_backend_common.so</libgtop:ShlibName> | ||||
|     </libgtop:Location> | ||||
|   </libgtop:Backend> | ||||
|  | ||||
| </libgtop:Backends> | ||||
							
								
								
									
										175
									
								
								backends/common/marshal.pl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										175
									
								
								backends/common/marshal.pl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,175 @@ | ||||
| #!/usr/bin/perl | ||||
|  | ||||
| require 'c_types.pl'; | ||||
|  | ||||
| $[ = 1;			# set array base to 1 | ||||
| $, = ' ';		# set output field separator | ||||
| $\ = "\n";		# set output record separator | ||||
|  | ||||
| $always_use_temp_storage = 1; | ||||
|  | ||||
| sub toupper { | ||||
|     local($_) = @_; | ||||
|     tr/a-z/A-Z/; | ||||
|     return $_; | ||||
| } | ||||
|  | ||||
| sub tolower { | ||||
|     local($_) = @_; | ||||
|     tr/A-Z/a-z/; | ||||
|     return $_; | ||||
| } | ||||
|  | ||||
| print '/* marshal.c */'; | ||||
| print "/* This is a generated file.  Please modify `marshal.pl' */"; | ||||
| print ''; | ||||
|  | ||||
| print '#include <backend-common.h>'; | ||||
| print ''; | ||||
| print '#include <glibtop/sysdeps.h>'; | ||||
| print '#include <glibtop/union.h>'; | ||||
| print ''; | ||||
| print '#include <glibtop/call-vector.h>'; | ||||
| print ''; | ||||
|  | ||||
| $feature_count = 0; | ||||
|  | ||||
| while (<>) { | ||||
|     chop;	# strip record separator | ||||
|  | ||||
|     if (/^[^#]/) { | ||||
| 	&output($_); | ||||
|     } | ||||
| } | ||||
|  | ||||
| sub output { | ||||
|     local($line) = @_; | ||||
|     @line_fields = split(/\|/, $line, 9999); | ||||
|     $retval = $line_fields[1]; | ||||
|     $feature = $line_fields[2]; | ||||
|     $param_def = $line_fields[4]; | ||||
|  | ||||
|     $orig = $feature; | ||||
|     $feature =~ s/^@//; | ||||
|     $space = $feature; | ||||
|     $space =~ s/./ /g; | ||||
|  | ||||
|     $features{++$feature_count} = $orig; | ||||
|  | ||||
|     return unless $orig =~ /^@/; | ||||
|  | ||||
|     if ($retval eq 'retval') { | ||||
|       $retval_param = '&retval'; | ||||
|       $call_prefix = ''; | ||||
|       $call_prefix_space = ''; | ||||
|       $prefix = 'retval = '; | ||||
|       $prefix_space = '         '; | ||||
|       $retval = 'int'; | ||||
|     } | ||||
|     elsif ($retval !~ /^void$/) { | ||||
|       $retval_param = 'NULL'; | ||||
|       $prefix = 'retval = '; | ||||
|       $prefix_space = '         '; | ||||
|       $call_prefix = 'retval = '; | ||||
|       $call_prefix_space = '         '; | ||||
|     } | ||||
|     else { | ||||
|       $retval_param = 'NULL'; | ||||
|       $call_prefix = ''; | ||||
|       $call_prefix_space = ''; | ||||
|       $prefix = ''; | ||||
|       $prefix_space = ''; | ||||
|     } | ||||
|  | ||||
|     if ($retval =~ /^(array|pointer)\((.*)\)$/) { | ||||
|       $retval = ($2 eq 'string') ? 'char **' : "$2 *"; | ||||
|     } | ||||
|  | ||||
|     $need_temp_storage = $always_use_temp_storage; | ||||
|     $first_param_name = ''; | ||||
|  | ||||
|     $call_param = ''; | ||||
|     $param_decl = ''; | ||||
|     $need_temp_len = 0; | ||||
|     $nr_params = (@params = split(/:/, $param_def, 9999)); | ||||
|     for ($param = 1; $param <= $nr_params; $param++) { | ||||
|       $list = $params[$param]; | ||||
|       $type = $params[$param]; | ||||
|       $type =~ s/\(.*//; | ||||
|       $list =~ s/^.*\(//; | ||||
|       $list =~ s/\)$//; | ||||
|       $count = (@fields = split(/,/, $list, 9999)); | ||||
|       for ($field = 1; $field <= $count; $field++) { | ||||
| 	my $c_type = $typeinfo->{$type}->[1]; | ||||
|  | ||||
| 	if ($first_param_name eq '') { | ||||
| 	  $first_param_name = $fields[$field]; | ||||
| 	} | ||||
|  | ||||
| 	if ($typeinfo->{$type}->[2]) { | ||||
| 	  $need_temp_storage = 1; | ||||
| 	} | ||||
|  | ||||
| 	if ($param_decl eq '') { | ||||
| 	  $param_decl = ",\n             " . $space . '    '; | ||||
| 	} | ||||
| 	else { | ||||
| 	  $param_decl = $param_decl . ', '; | ||||
| 	} | ||||
| 	$param_decl = $param_decl . $c_type . ' ' . $fields[$field]; | ||||
| 	$call_param = $call_param . ', ' . $fields[$field]; | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     if ($line_fields[3] eq '') { | ||||
|       $total_code = sprintf | ||||
| 	("\treturn glibtop_get_%s_s (server%s);\n", $feature, $call_param); | ||||
|     } elsif ($line_fields[3] eq 'array') { | ||||
|       $total_code = sprintf | ||||
| 	("\treturn glibtop_get_%s_s (server, array%s);\n", $feature, $call_param); | ||||
|     } elsif ($line_fields[3] =~ /^array/) { | ||||
|       $total_code = sprintf | ||||
| 	("\treturn glibtop_get_%s_s (server, array, buf%s);\n", $feature, $call_param); | ||||
|     } else { | ||||
|       $total_code = sprintf | ||||
| 	("\treturn glibtop_get_%s_s (server, buf%s);\n", $feature, $call_param); | ||||
|     } | ||||
|  | ||||
|     $func_decl = 'static '.$retval."\n"; | ||||
|     if ($line_fields[3] eq '') { | ||||
|       $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure%s)\n", | ||||
| 			     $feature, $param_decl); | ||||
|     } elsif ($line_fields[3] eq 'array') { | ||||
|       $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array%s)\n", | ||||
| 			     $feature, $param_decl); | ||||
|     } elsif ($line_fields[3] =~ /^array/) { | ||||
|       $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array, %s *buf%s)\n", | ||||
| 			     $feature, 'glibtop_'.$feature, $param_decl); | ||||
|     } else { | ||||
|       $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, %s *buf%s)\n", | ||||
| 			     $feature, 'glibtop_'.$feature, $param_decl); | ||||
|     } | ||||
|  | ||||
|     $total_code = sprintf ("%s{\n%s\n%s}\n", $func_decl, $total_code); | ||||
|  | ||||
|     print $total_code; | ||||
| } | ||||
|  | ||||
| $call_vector_code = ''; | ||||
| for ($nr = 1; $nr <= $feature_count; $nr++) { | ||||
|   $feature = $features{$nr}; | ||||
|  | ||||
|   if ($feature =~ /^@/) { | ||||
|     $feature =~ s/^@//; | ||||
|  | ||||
|     $call_vector_code .= sprintf (qq[\t_glibtop_get_%s_c,\n], $feature); | ||||
|   } else { | ||||
|     $call_vector_code .= sprintf (qq[\tNULL,\n]); | ||||
|   } | ||||
| } | ||||
|  | ||||
| print 'glibtop_call_vector glibtop_backend_common_call_vector = {'; | ||||
| print $call_vector_code; | ||||
| print '};'; | ||||
| print ''; | ||||
|  | ||||
							
								
								
									
										10
									
								
								backends/server/.cvsignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								backends/server/.cvsignore
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | ||||
| .deps | ||||
| .libs | ||||
| Makefile | ||||
| Makefile.in | ||||
| *.lo | ||||
| *.la | ||||
| marshal.c | ||||
| demarshal.c | ||||
| libgtop_server | ||||
| command.h | ||||
							
								
								
									
										85
									
								
								backends/server/ChangeLog
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								backends/server/ChangeLog
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,85 @@ | ||||
| 2000-11-27  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* backend-server.c (backend_server_quark): New global variable. | ||||
| 	(_open_server, _close_server): Use the quark. | ||||
| 	* commands.c: Likewise. | ||||
|  | ||||
| 2000-11-26  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* backend-server.h: New file. | ||||
| 	(backend_server_private): New struct, formerly known | ||||
| 	as glibtop_backend_private. | ||||
|  | ||||
| 	* glibtop-backend-private.h: Removed. | ||||
|  | ||||
| 	* backend-server.c: (_open_server): Use g_object_set_data() | ||||
| 	to set add the backend_server_private data to the glibtop_backend, | ||||
| 	don't override `backend->_priv'. | ||||
| 	(_close_server): Use g_object_get_data() to get the data. | ||||
| 	[FIXME: Use quarks directly.] | ||||
|  | ||||
| 	* read.c: (glibtop_read_i): Replaced the glibtop_server and | ||||
| 	glibtop_backend arguments with backend_server_private. | ||||
| 	* read_data.c: (glibtop_read_data_i): Likewise. | ||||
| 	* write.c: (glibtop_write_i): Likewise. | ||||
|  | ||||
| 2000-02-22  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* backend-sysdeps.c (LibGTopBackendInfo): Call this | ||||
| 	`LibGTopBackendInfo_Server' when we don't use gmodule. | ||||
|  | ||||
| 2000-02-22  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* Makefile.am: Only install the libs in $(LIBGTOP_BACKEND_DIR) | ||||
| 	when we LIBGTOP_USE_GMODULE and in $(libdir) otherwise. | ||||
|  | ||||
| 2000-01-18  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* demarshal.pl: Only emit code for functions which are | ||||
| 	really suid/sgid. | ||||
|  | ||||
| 2000-01-13  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* write.c (glibtop_write_i): The buffer which we write is | ||||
| 	now a `const'. | ||||
|  | ||||
| 2000-01-12  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* Makefile.am: Install everything except the server binary | ||||
| 	in $(LIBGTOP_BACKEND_DIR). | ||||
|  | ||||
| 	* libgtop-server.backend: New file. | ||||
|  | ||||
| 	* backend-server.c (glibtop_backend_server): Renamed to | ||||
| 	`LibGTopBackendInfo'. | ||||
|  | ||||
| 2000-01-08  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* command.h.in (glibtop_response): New structure. | ||||
|  | ||||
| 2000-01-02  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* command.pl: New file. Creates `command.h' from `command.h.in'. | ||||
| 	* command.h.in: New file. Template file for `command.h'. | ||||
|  | ||||
| 	* io.c, version.c: New files. Copied here from `src/daemon'. | ||||
|  | ||||
| 	* demarshal.pl: New file. Automatically creates `demarshal.c'. | ||||
| 	* demarshal.c: This automatically created file handles the | ||||
| 	demarshalling in the libgtop_server. | ||||
|  | ||||
| 	* Makefile.am: Build the `libgtop_server' here. | ||||
| 	* server.c, server.h: New files. Copied here from `src/daemon'. | ||||
|  | ||||
| 2000-01-01  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	Initial version of the "glibtop-backend-server" backend. | ||||
|  | ||||
| 	* command.c, read.c, read_data.c, write.c: New files. Moved here | ||||
| 	from the `lib' directory. | ||||
|  | ||||
| 	* backend-server.c: New file. | ||||
| 	* glibtop-backend-private.h: New file. | ||||
|  | ||||
| 	* marshal.pl: New file. Automatically creates `marshal.c'. | ||||
|  | ||||
							
								
								
									
										85
									
								
								backends/server/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								backends/server/Makefile.am
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,85 @@ | ||||
| LINK		= $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@ | ||||
|  | ||||
| INCLUDES	= @INCLUDES@ -D_BSD \ | ||||
| 		  -DLIBGTOP_COMPILE_SYSTEM=\"`uname -s`\" \ | ||||
| 		  -DLIBGTOP_COMPILE_RELEASE=\"`uname -r`\" \ | ||||
| 		  -DLIBGTOP_COMPILE_MACHINE=\"`uname -m`\" | ||||
|  | ||||
| backenddir	= @LIBGTOP_BACKEND_DIR@ | ||||
|  | ||||
| if LIBGTOP_USE_GMODULE | ||||
| backendlibdir	= $(backenddir) | ||||
| else | ||||
| backendlibdir	= $(libdir) | ||||
| endif | ||||
|  | ||||
| dynamic_ldflags	= @libgtop_dynamic_ldflags@ | ||||
|  | ||||
| backend_DATA = \ | ||||
| 	libgtop-server.backend | ||||
|  | ||||
| noinst_HEADERS = \ | ||||
| 	backend-server.h | ||||
|  | ||||
| backendlib_LTLIBRARIES = \ | ||||
| 	libgtop_backend_server.la | ||||
|  | ||||
| bin_PROGRAMS = \ | ||||
| 	@server_programs@ | ||||
|  | ||||
| EXTRA_PROGRAMS = \ | ||||
| 	libgtop_server | ||||
|  | ||||
| libgtop_backend_server_la_SOURCES = \ | ||||
| 	backend-server.c		\ | ||||
| 	marshal.c			\ | ||||
| 	command.c			\ | ||||
| 	read.c				\ | ||||
| 	read_data.c			\ | ||||
| 	write.c | ||||
|  | ||||
| libgtop_backend_server_la_LDFLAGS = \ | ||||
| 	$(LT_VERSION_INFO) $(dynamic_ldflags) | ||||
|  | ||||
| libgtop_server_SOURCES = \ | ||||
| 	server.c		\ | ||||
| 	server.h		\ | ||||
| 	demarshal.c		\ | ||||
| 	version.c		\ | ||||
| 	io.c | ||||
|  | ||||
| libgtop_server_LDADD = \ | ||||
| 	$(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps_suid.la \ | ||||
| 	$(top_builddir)/sysdeps/common/libgtop_suid_common.la \ | ||||
| 	@LIBSUPPORT@ | ||||
|  | ||||
| if ENABLE_STATIC | ||||
| libgtop_server_LDFLAGS = -static | ||||
| endif | ||||
|  | ||||
| BUILT_SOURCES = \ | ||||
| 	marshal.c		\ | ||||
| 	demarshal.c		\ | ||||
| 	command.h | ||||
|  | ||||
| EXTRA_DIST = \ | ||||
| 	marshal.pl		\ | ||||
| 	demarshal.pl		\ | ||||
| 	command.pl		\ | ||||
| 	command.h.in		\ | ||||
| 	libgtop-server.backend | ||||
|  | ||||
| CLEANFILES = $(BUILT_SOURCES) | ||||
|  | ||||
| marshal.c: marshal.pl $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl | ||||
| 	$(PERL) -I $(top_srcdir)/scripts $(srcdir)/marshal.pl < $(top_srcdir)/features.def > tmp-t | ||||
| 	mv tmp-t marshal.c | ||||
|  | ||||
| demarshal.c: demarshal.pl $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl | ||||
| 	$(PERL) -I $(top_srcdir)/scripts $(srcdir)/demarshal.pl < $(top_srcdir)/features.def > tmp-t | ||||
| 	mv tmp-t demarshal.c | ||||
|  | ||||
| command.h: command.pl command.h.in $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl | ||||
| 	$(PERL) -I $(top_srcdir)/scripts $(srcdir)/command.pl $(top_srcdir)/features.def $(srcdir)/command.h.in > tmp-t | ||||
| 	mv tmp-t command.h | ||||
|  | ||||
							
								
								
									
										113
									
								
								backends/server/backend-server.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										113
									
								
								backends/server/backend-server.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,113 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #include <backend-server.h> | ||||
|  | ||||
| static int | ||||
| _open_server (glibtop_server *, glibtop_backend *, u_int64_t, const char **); | ||||
|  | ||||
| static int | ||||
| _close_server (glibtop_server *, glibtop_backend *, void *); | ||||
|  | ||||
| extern glibtop_call_vector glibtop_backend_server_call_vector; | ||||
|  | ||||
| #ifdef LIBGTOP_USE_GMODULE | ||||
| glibtop_backend_info LibGTopBackendInfo = { | ||||
|     "glibtop-backend-server", _open_server, _close_server, | ||||
|     &glibtop_backend_server_call_vector | ||||
| }; | ||||
| #else | ||||
| glibtop_backend_info LibGTopBackendInfo_Server = { | ||||
|     "glibtop-backend-server", _open_server, _close_server, | ||||
|     &glibtop_backend_server_call_vector | ||||
| }; | ||||
| #endif | ||||
|  | ||||
| static int | ||||
| _open_server (glibtop_server *server, glibtop_backend *backend, | ||||
| 	      u_int64_t features, const char **backend_args) | ||||
| { | ||||
|     backend_server_private *priv; | ||||
|  | ||||
|     priv = glibtop_calloc_r (server, 1, sizeof (backend_server_private)); | ||||
|  | ||||
|     glibtop_backend_set_closure_data (backend, priv); | ||||
|  | ||||
| #ifdef DEBUG | ||||
|     fprintf (stderr, "open_server - %p, %p, %p\n", server, backend, priv); | ||||
|  | ||||
|     fprintf (stderr, "Opening pipe to server (%s).\n", LIBGTOP_SERVER); | ||||
| #endif | ||||
|  | ||||
|     if (pipe (priv->input) || pipe (priv->output)) { | ||||
| 	glibtop_warn_io_r (server, "cannot make a pipe"); | ||||
| 	return -1; | ||||
|     } | ||||
|  | ||||
|     priv->pid  = fork (); | ||||
|  | ||||
|     if (priv->pid < 0) { | ||||
| 	glibtop_warn_io_r (server, "fork failed"); | ||||
| 	return -1; | ||||
|     } else if (priv->pid == 0) { | ||||
| 	close (0); close (1); | ||||
| 	close (priv->input [0]); | ||||
| 	close (priv->output [1]); | ||||
| 	dup2 (priv->input [1], 1); | ||||
| 	dup2 (priv->output [0], 0); | ||||
| 	execl (LIBGTOP_SERVER, "libgtop-server", NULL); | ||||
| 	glibtop_error_io_r (server, "execl (%s)", | ||||
| 			    LIBGTOP_SERVER); | ||||
| 	_exit (2); | ||||
|     } | ||||
|  | ||||
|     close (priv->input [1]); | ||||
|     close (priv->output [0]); | ||||
|  | ||||
|     glibtop_server_ref (server); | ||||
|     priv->server = server; | ||||
|  | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| static int | ||||
| _close_server (glibtop_server *server, glibtop_backend *backend, | ||||
| 	       void *closure) | ||||
| { | ||||
|     backend_server_private *priv = closure; | ||||
|  | ||||
|     kill (priv->pid, SIGKILL); | ||||
|     close (priv->input [0]); | ||||
|     close (priv->output [1]); | ||||
|  | ||||
|     glibtop_server_unref (priv->server); | ||||
|  | ||||
|     priv->pid = 0; | ||||
|  | ||||
|     g_free (priv); | ||||
|  | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
							
								
								
									
										66
									
								
								backends/server/backend-server.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								backends/server/backend-server.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,66 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #ifndef __GLIBTOP_BACKEND_COMMON_H__ | ||||
| #define __GLIBTOP_BACKEND_COMMON_H__ | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/global.h> | ||||
|  | ||||
| #include <glibtop/open.h> | ||||
| #include <glibtop/xmalloc.h> | ||||
| #include <glibtop/glibtop-backend.h> | ||||
| #include <glibtop/glibtop-backend-info.h> | ||||
|  | ||||
| typedef struct _backend_server_private backend_server_private; | ||||
|  | ||||
| struct _backend_server_private | ||||
| { | ||||
|     u_int64_t flags; | ||||
|     int input [2];		/* Pipe client <- server */ | ||||
|     int output [2];		/* Pipe client -> server */ | ||||
|     pid_t pid;			/* PID of the server */ | ||||
|  | ||||
|     glibtop_server *server; | ||||
| }; | ||||
|  | ||||
| void * | ||||
| glibtop_call_i (glibtop_server *server, backend_server_private *priv, | ||||
| 		unsigned command, size_t send_size, const void *send_ptr, | ||||
| 		size_t data_size, const void *data_ptr, | ||||
| 		size_t recv_size, void *recv_ptr, | ||||
| 		int *retval_ptr); | ||||
|  | ||||
| void | ||||
| glibtop_read_i (backend_server_private *priv, size_t size, void *buf); | ||||
|  | ||||
| void * | ||||
| glibtop_read_data_i (backend_server_private *priv); | ||||
|  | ||||
| void | ||||
| glibtop_write_i (backend_server_private *priv, size_t size, const void *buf); | ||||
|  | ||||
| #endif | ||||
|  | ||||
							
								
								
									
										100
									
								
								backends/server/command.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										100
									
								
								backends/server/command.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,100 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #include <backend-server.h> | ||||
|  | ||||
| #include "command.h" | ||||
|  | ||||
| void * | ||||
| glibtop_call_i (glibtop_server *server, backend_server_private *priv, | ||||
| 		unsigned command, size_t send_size, const void *send_buf, | ||||
| 		size_t data_size, const void *data_buf, | ||||
| 		size_t recv_size, void *recv_ptr, | ||||
| 		int *retval_ptr) | ||||
| { | ||||
|     glibtop_command cmnd; | ||||
|     glibtop_response resp; | ||||
| #if 0 | ||||
|     int retval; | ||||
| #endif | ||||
|  | ||||
|     memset (&cmnd, 0, sizeof (glibtop_command)); | ||||
|     memset (&resp, 0, sizeof (glibtop_response)); | ||||
|  | ||||
|     cmnd.command = command; | ||||
|  | ||||
|     /* If send_size is less than _GLIBTOP_PARAM_SIZE (normally 16 Bytes), we | ||||
|      * send it together with command, so we only need one system call instead | ||||
|      * of two. */ | ||||
|  | ||||
|     if (send_size <= _GLIBTOP_PARAM_SIZE) { | ||||
| 	memcpy (cmnd.parameter, send_buf, send_size); | ||||
| 	cmnd.param_size = send_size; | ||||
|     } else { | ||||
| 	cmnd.send_size = send_size; | ||||
|     } | ||||
|  | ||||
|     cmnd.data_size = data_size; | ||||
| 	 | ||||
|     glibtop_write_i (priv, sizeof (glibtop_command), &cmnd); | ||||
|  | ||||
|     if (data_size) { | ||||
| #ifdef SLAVE_DEBUG | ||||
| 	fprintf (stderr, "SENDING %d bytes of DATA.\n", data_size); | ||||
| #endif | ||||
| 	glibtop_write_i (priv, data_size, data_buf); | ||||
|     } | ||||
|  | ||||
|     glibtop_read_i (priv, sizeof (glibtop_response), &resp); | ||||
|  | ||||
| #ifdef SLAVE_DEBUG | ||||
|     fprintf (stderr, "RESPONSE: %d - %d - %ld - %ld - %p - %ld\n", | ||||
| 	     resp.retval, resp.glibtop_errno, | ||||
| 	     (long) resp.recv_size, (long) resp.data_size, | ||||
| 	     recv_ptr, (long) recv_size); | ||||
| #endif | ||||
|      | ||||
|     if (retval_ptr) | ||||
| 	*retval_ptr = resp.glibtop_errno; | ||||
|  | ||||
|     if (resp.recv_size != recv_size) { | ||||
| 	glibtop_warn_r (server, "Expected %ld bytes, but got %ld.", | ||||
| 			(long) recv_size, (long) resp.recv_size); | ||||
| 	return NULL; | ||||
|     } | ||||
|  | ||||
|     if (recv_ptr) | ||||
| 	glibtop_read_i (priv, recv_size, recv_ptr); | ||||
|  | ||||
|     if (resp.data_size) { | ||||
| 	void *ptr = glibtop_malloc_r (server, resp.data_size); | ||||
|  | ||||
| 	glibtop_read_i (priv, resp.data_size, ptr); | ||||
|  | ||||
| 	return ptr; | ||||
|     } | ||||
|  | ||||
|     return NULL; | ||||
| } | ||||
							
								
								
									
										59
									
								
								backends/server/command.h.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								backends/server/command.h.in
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,59 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| @@AUTOGEN_COMMENT@@ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #ifndef __GLIBTOP_COMMAND_H__ | ||||
| #define __GLIBTOP_COMMAND_H__ | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/union.h> | ||||
|  | ||||
| BEGIN_LIBGTOP_DECLS | ||||
|  | ||||
| @@GLIBTOP_COMMAND_CONSTANTS@@ | ||||
|  | ||||
| #define _GLIBTOP_PARAM_SIZE		16 | ||||
|  | ||||
| typedef struct _glibtop_command		glibtop_command; | ||||
| typedef struct _glibtop_response	glibtop_response; | ||||
|  | ||||
| struct _glibtop_command | ||||
| { | ||||
|     u_int64_t	command; | ||||
|     u_int64_t	param_size, send_size, data_size; | ||||
|     char	parameter [_GLIBTOP_PARAM_SIZE]; | ||||
| }; | ||||
|  | ||||
| struct _glibtop_response | ||||
| { | ||||
|     int retval; | ||||
|     int glibtop_errno; | ||||
|     u_int64_t recv_size, data_size; | ||||
| }; | ||||
|  | ||||
| END_LIBGTOP_DECLS | ||||
|  | ||||
| #endif | ||||
							
								
								
									
										76
									
								
								backends/server/command.pl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								backends/server/command.pl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,76 @@ | ||||
| #!/usr/bin/perl | ||||
|  | ||||
| require 'c_types.pl'; | ||||
|  | ||||
| die "Usage: $0 features.def command.h.in" unless $#ARGV == 1; | ||||
|  | ||||
| $[ = 1;			# set array base to 1 | ||||
| $, = ' ';		# set output field separator | ||||
| $\ = "\n";		# set output record separator | ||||
|  | ||||
| sub toupper { | ||||
|     local($_) = @_; | ||||
|     tr/a-z/A-Z/; | ||||
|     return $_; | ||||
| } | ||||
|  | ||||
| sub tolower { | ||||
|     local($_) = @_; | ||||
|     tr/A-Z/a-z/; | ||||
|     return $_; | ||||
| } | ||||
|  | ||||
| $constants_decl_code = ''; | ||||
|  | ||||
| open FEATURESDEF, $ARGV[1] or | ||||
|   die "open ($ARGV[1]): $!"; | ||||
|  | ||||
| while (<FEATURESDEF>) { | ||||
|   chop;				# strip record separator | ||||
|    | ||||
|   if (/^[^\#]/) { | ||||
|     &parse_features_def ($_); | ||||
|   } | ||||
| } | ||||
|  | ||||
| close FEATURESDEF; | ||||
|  | ||||
| sub parse_features_def { | ||||
|   local($line) = @_; | ||||
|   @line_fields = split(/\|/, $line, 9999); | ||||
|   $retval = $line_fields[1]; | ||||
|   $element_def = $line_fields[3]; | ||||
|   $feature = $line_fields[2]; | ||||
|   $param_def = $line_fields[4]; | ||||
|  | ||||
|   $orig = $feature; | ||||
|   $feature =~ s/^@//; | ||||
|   $space = $feature; | ||||
|   $space =~ s/./ /g; | ||||
|  | ||||
|   $constants_decl_code .= sprintf | ||||
|     (qq[\#define %-40s %d\n], 'GLIBTOP_CMND_'.&toupper($feature), | ||||
|      ++$feature_count); | ||||
|  | ||||
|   $features{$feature_count} = $feature; | ||||
| } | ||||
|  | ||||
| chop $constants_decl_code; | ||||
|  | ||||
| $auto_gen_comment = sprintf | ||||
|   (qq[/*\n * This file is automatically generated.\n * Please modify `command.pl' and `command.h.in'.\n */]); | ||||
|  | ||||
| open COMMAND, $ARGV[2] or | ||||
|   die "open ($ARGV[2]): $!"; | ||||
|  | ||||
| while (<COMMAND>) { | ||||
|   chop; | ||||
|  | ||||
|   s/^\s*\@\@GLIBTOP_COMMAND_CONSTANTS\@\@\s*$/$constants_decl_code/; | ||||
|  | ||||
|   s/^\s*\@\@AUTOGEN_COMMENT\@\@\s*$/$auto_gen_comment/; | ||||
| } continue { | ||||
|   print $_; | ||||
| } | ||||
|  | ||||
| close COMMAND; | ||||
							
								
								
									
										386
									
								
								backends/server/demarshal.pl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										386
									
								
								backends/server/demarshal.pl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,386 @@ | ||||
| #!/usr/bin/perl | ||||
|  | ||||
| require 'c_types.pl'; | ||||
|  | ||||
| $[ = 1;			# set array base to 1 | ||||
| $, = ' ';		# set output field separator | ||||
| $\ = "\n";		# set output record separator | ||||
|  | ||||
| $always_use_temp_storage = 0; | ||||
|  | ||||
| sub toupper { | ||||
|     local($_) = @_; | ||||
|     tr/a-z/A-Z/; | ||||
|     return $_; | ||||
| } | ||||
|  | ||||
| sub tolower { | ||||
|     local($_) = @_; | ||||
|     tr/A-Z/a-z/; | ||||
|     return $_; | ||||
| } | ||||
|  | ||||
| print '/* demarshal.c */'; | ||||
| print "/* This is a generated file.  Please modify `demarshal.pl' */"; | ||||
| print ''; | ||||
|  | ||||
| print '#include <glibtop.h>'; | ||||
| print '#include <glibtop/open.h>'; | ||||
| print '#include <glibtop/xmalloc.h>'; | ||||
| print ''; | ||||
| print '#include <glibtop/sysdeps.h>'; | ||||
| print '#include <glibtop/union.h>'; | ||||
| print ''; | ||||
| print '#include <glibtop/backend.h>'; | ||||
| print ''; | ||||
| print '#include <glibtop-backend-private.h>'; | ||||
| print '#include "server.h"'; | ||||
| print ''; | ||||
|  | ||||
| $feature_count = 0; | ||||
|  | ||||
| while (<>) { | ||||
|   chop;	# strip record separator | ||||
|  | ||||
|   if (/^[^\#]/) { | ||||
|     &output($_); | ||||
|   } | ||||
| } | ||||
|  | ||||
| sub output { | ||||
|   local($line) = @_; | ||||
|   @line_fields = split(/\|/, $line, 9999); | ||||
|   $retval = $line_fields[1]; | ||||
|   $element_def = $line_fields[3]; | ||||
|   $feature = $line_fields[2]; | ||||
|   $param_def = $line_fields[4]; | ||||
|  | ||||
|   return if $feature =~ /^@/; | ||||
|   $name = 'glibtop_'.$feature; | ||||
|    | ||||
|   $orig = $feature; | ||||
|   $feature =~ s/^@//; | ||||
|   $space = $feature; | ||||
|   $space =~ s/./ /g; | ||||
|    | ||||
|   $features{++$feature_count} = $feature; | ||||
|  | ||||
|   $orig_retval = $retval; | ||||
|    | ||||
|   if ($retval eq 'retval') { | ||||
|     $retval_param = '&retval'; | ||||
|     $call_prefix = ''; | ||||
|     $call_prefix_space = ''; | ||||
|     $prefix = 'retval = '; | ||||
|     $prefix_space = '         '; | ||||
|     $retval = 'int'; | ||||
|   } elsif ($retval !~ /^void$/) { | ||||
|     $retval_param = 'NULL'; | ||||
|     $prefix = 'retval = '; | ||||
|     $prefix_space = '         '; | ||||
|     $call_prefix = 'retval = '; | ||||
|     $call_prefix_space = '         '; | ||||
|   } else { | ||||
|     $retval_param = 'NULL'; | ||||
|     $call_prefix = ''; | ||||
|     $call_prefix_space = ''; | ||||
|     $prefix = ''; | ||||
|     $prefix_space = ''; | ||||
|   } | ||||
|    | ||||
|   if ($retval =~ /^(array|pointer)\((.*)\)$/) { | ||||
|     $retval = ($2 eq 'string') ? 'char **' : "$2 *"; | ||||
|   } | ||||
|    | ||||
|   $need_temp_storage = $always_use_temp_storage; | ||||
|   $first_param_name = ''; | ||||
|   $size_code = "\t/* send size */\n"; | ||||
|   $size_code .= "\t_LIBGTOP_SEND_len = 0;\n"; | ||||
|    | ||||
|   $local_var_decl_code = ''; | ||||
|   $local_var_decl_code .= "\tsize_t _LIBGTOP_SEND_len, _LIBGTOP_RECV_len;\n"; | ||||
|   $local_var_decl_code .= "\toff_t _LIBGTOP_SEND_offset;\n"; | ||||
|   $local_var_decl_code .= "\tchar *_LIBGTOP_RECV_buf, *_LIBGTOP_RECV_ptr;\n"; | ||||
|   $local_var_decl_code .= "\tconst char *_LIBGTOP_SEND_ptr;\n"; | ||||
|   $local_var_decl_code .= sprintf | ||||
|     (qq[\tglibtop_%s %s;\n], $feature, $feature); | ||||
|   if ($retval !~ /^void$/) { | ||||
|     $local_var_decl_code .= sprintf ("\t%s retval = (%s) 0;\n", | ||||
| 				     $retval, $retval); | ||||
|   } | ||||
|  | ||||
|   $init_local_var_code = "\t/* variable initialization */\n"; | ||||
|   $init_local_var_code .= sprintf | ||||
|     (qq[\tmemset (&%s, 0, sizeof (glibtop_%s));\n], $feature, $feature); | ||||
|   $init_local_var_code .= "\t_LIBGTOP_SEND_offset = 0;\n"; | ||||
|   $init_local_var_code .= "\t_LIBGTOP_SEND_ptr = ". | ||||
|     "(char *) send_ptr;\n"; | ||||
|  | ||||
|   $demarshal_code = ''; | ||||
|  | ||||
|   $call_param = ''; | ||||
|   $param_decl = ''; | ||||
|   $need_temp_len = 0; | ||||
|   $nr_params = (@params = split(/:/, $param_def, 9999)); | ||||
|   for ($param = 1; $param <= $nr_params; $param++) { | ||||
|     $list = $params[$param]; | ||||
|     $type = $params[$param]; | ||||
|     $type =~ s/\(.*//; | ||||
|     $list =~ s/^.*\(//; | ||||
|     $list =~ s/\)$//; | ||||
|     $count = (@fields = split(/,/, $list, 9999)); | ||||
|     for ($field = 1; $field <= $count; $field++) { | ||||
|       my $c_type = $typeinfo->{$type}->[1]; | ||||
|        | ||||
|       if ($first_param_name eq '') { | ||||
| 	$first_param_name = $fields[$field]; | ||||
|       } | ||||
|        | ||||
|       if ($typeinfo->{$type}->[2]) { | ||||
| 	$need_temp_storage = 1; | ||||
|       } | ||||
|        | ||||
|       if ($param_decl eq '') { | ||||
| 	$param_decl = ",\n            " . $space . '    '; | ||||
|       } else { | ||||
| 	$param_decl = $param_decl . ', '; | ||||
|       } | ||||
|       $param_decl = $param_decl . $c_type . ' ' . $fields[$field]; | ||||
|       $call_param = $call_param . ', _LIBGTOP_demarshal_' . $fields[$field]; | ||||
|  | ||||
|       $size_code .= "\t_LIBGTOP_SEND_len += "; | ||||
|       if ($typeinfo->{$type}->[2]) { | ||||
| 	$size_code .= sprintf ("sizeof (size_t)"); | ||||
|       } else { | ||||
| 	$size_code .= sprintf ("sizeof (%s)", $c_type); | ||||
|       } | ||||
|       $size_code .= ";\n"; | ||||
|  | ||||
|       $local_var_decl_code .= sprintf | ||||
| 	(qq[\t%s _LIBGTOP_demarshal_%s;\n], $c_type, $fields[$field]); | ||||
|       $init_local_var_code .= sprintf | ||||
| 	(qq[\tmemset (&_LIBGTOP_demarshal_%s, 0, sizeof (%s));\n], | ||||
| 	 $fields[$field], $c_type); | ||||
|  | ||||
|       $demarshal_code .= "\t_LIBGTOP_SEND_ptr = ". | ||||
| 	"(char *) send_ptr + _LIBGTOP_SEND_offset;\n"; | ||||
|  | ||||
|       if ($typeinfo->{$type}->[2]) { | ||||
| 	$demarshal_code .= sprintf ("\tmemcpy (&_LIBGTOP_TEMP_len, _LIBGTOP_SEND_ptr, sizeof (size_t));\n"); | ||||
| 	$demarshal_code .= sprintf | ||||
| 	  (qq[\t_LIBGTOP_DATA_len += _LIBGTOP_TEMP_len;\n]); | ||||
| 	$demarshal_code .= sprintf | ||||
| 	  (qq[\tif (_LIBGTOP_DATA_len > data_size)\n\t\treturn -GLIBTOP_ERROR_DEMARSHAL_ERROR;\n]); | ||||
| 	$demarshal_code .= sprintf | ||||
| 	  (qq[\t_LIBGTOP_DATA_offset += _LIBGTOP_TEMP_len;\n]); | ||||
|       } | ||||
|  | ||||
|       if (defined $demarshal_funcs->{$type}) { | ||||
| 	$demarshal_code .= $demarshal_funcs->{$type}->($c_type, $fields[$field], "\t"); | ||||
|       } else { | ||||
| 	$demarshal_code .= sprintf ("\tmemcpy (&_LIBGTOP_demarshal_%s, _LIBGTOP_SEND_ptr, %s);\n", | ||||
| 				    $fields[$field], "sizeof ($c_type)"); | ||||
|       } | ||||
|  | ||||
|       $demarshal_code .= "\t_LIBGTOP_SEND_offset += "; | ||||
|       if ($typeinfo->{$type}->[2]) { | ||||
| 	$demarshal_code .= sprintf ("sizeof (size_t)"); | ||||
|       } else { | ||||
| 	$demarshal_code .= sprintf ("sizeof (%s)", $c_type); | ||||
|       } | ||||
|       $demarshal_code .= ";\n"; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   if (!($demarshal_code eq '')) { | ||||
|     $demarshal_code = sprintf (qq[\t/* demarshal start */\n%s\n], | ||||
| 			       $demarshal_code); | ||||
|   } | ||||
|  | ||||
|   if ($line_fields[3] eq '') { | ||||
|     $call_code = sprintf | ||||
|       ("\tretval = glibtop_get_%s_p (server%s);\n", | ||||
|        $feature, $call_param); | ||||
|   } elsif ($line_fields[3] eq 'array') { | ||||
|     $call_code = sprintf | ||||
|       ("\tretval = glibtop_get_%s_p (server, &array%s);\n", | ||||
|        $feature, $call_param); | ||||
|     $local_var_decl_code .= sprintf (qq[\tglibtop_array array;\n]); | ||||
|   } elsif ($line_fields[3] =~ /^array/) { | ||||
|     $call_code = sprintf | ||||
|       ("\tretval = glibtop_get_%s_p (server, &array, &%s%s);\n", | ||||
|        $feature, $feature, $call_param); | ||||
|     $local_var_decl_code .= sprintf (qq[\tglibtop_array array;\n]); | ||||
|   } else { | ||||
|     $call_code = sprintf | ||||
|       ("\tretval = glibtop_get_%s_p (server, &%s%s);\n", | ||||
|        $feature, $feature, $call_param); | ||||
|   } | ||||
|  | ||||
|   if ($orig_retval eq 'retval') { | ||||
|     $call_code .= sprintf | ||||
|       (qq[\tif (retval_ptr)\n\t\t*retval_ptr = retval;\n]); | ||||
|   } else { | ||||
|     $call_code .= sprintf | ||||
|       (qq[\tif (retval_ptr)\n\t\t*retval_ptr = server->glibtop_errno;\n]); | ||||
|   } | ||||
|  | ||||
|   $size_code .= sprintf | ||||
|     (qq[\tif (_LIBGTOP_SEND_len != send_size)\n\t\treturn -GLIBTOP_ERROR_DEMARSHAL_ERROR;\n\n]); | ||||
|  | ||||
|   $size_code .= "\t/* recv size */\n"; | ||||
|   $size_code .= "\t_LIBGTOP_RECV_len = 0;\n"; | ||||
|   if ($line_fields[3] eq '') { | ||||
|   } elsif ($line_fields[3] eq 'array') { | ||||
|     $size_code .= "\t_LIBGTOP_RECV_len += sizeof (glibtop_array);\n"; | ||||
|   } elsif ($line_fields[3] =~ /^array/) { | ||||
|     $size_code .= "\t_LIBGTOP_RECV_len += sizeof (glibtop_array);\n"; | ||||
|     $size_code .= sprintf | ||||
|       (qq[\t_LIBGTOP_RECV_len += sizeof (glibtop_%s);\n], $feature); | ||||
|   } else { | ||||
|     $size_code .= sprintf | ||||
|       (qq[\t_LIBGTOP_RECV_len += sizeof (glibtop_%s);\n], $feature); | ||||
|   } | ||||
|   $size_code .= "\n"; | ||||
|  | ||||
|   $size_code .= "\t/* recv buffer */\n"; | ||||
|   if ($line_fields[3] eq '') { | ||||
|     $size_code .= "\t_LIBGTOP_RECV_buf = NULL;\n"; | ||||
|   } else { | ||||
|     $size_code .= "\t_LIBGTOP_RECV_buf = glibtop_malloc_r (server, _LIBGTOP_RECV_len);\n"; | ||||
|   } | ||||
|   $size_code .= "\t_LIBGTOP_RECV_ptr = _LIBGTOP_RECV_buf;\n\n"; | ||||
|  | ||||
|   $recv_buf_code = ''; | ||||
|   if ($line_fields[3] eq '') { | ||||
|   } elsif ($line_fields[3] eq 'array') { | ||||
|     $recv_buf_code = "\t/* write recv buffer */\n"; | ||||
|     $recv_buf_code .= sprintf | ||||
|       (qq[\tmemcpy (_LIBGTOP_RECV_ptr, &array, sizeof (glibtop_array));\n]); | ||||
|     $recv_buf_code .= sprintf | ||||
|       (qq[\t_LIBGTOP_RECV_ptr += sizeof (glibtop_array);\n]); | ||||
|   } elsif ($line_fields[3] =~ /^array/) { | ||||
|     $recv_buf_code = "\t/* write recv buffer */\n"; | ||||
|     $recv_buf_code .= sprintf | ||||
|       (qq[\tmemcpy (_LIBGTOP_RECV_ptr, &array, sizeof (glibtop_array));\n]); | ||||
|     $recv_buf_code .= sprintf | ||||
|       (qq[\t_LIBGTOP_RECV_ptr += sizeof (glibtop_array);\n]); | ||||
|     $recv_buf_code .= sprintf | ||||
|       (qq[\tmemcpy (_LIBGTOP_RECV_ptr, &%s, sizeof (glibtop_%s));\n], | ||||
|        $feature, $feature); | ||||
|     $recv_buf_code .= sprintf | ||||
|       (qq[\t_LIBGTOP_RECV_ptr += sizeof (glibtop_%s);\n], $feature); | ||||
|   } else { | ||||
|     $recv_buf_code = "\t/* write recv buffer */\n"; | ||||
|     $recv_buf_code .= sprintf | ||||
|       (qq[\tmemcpy (_LIBGTOP_RECV_ptr, &%s, sizeof (glibtop_%s));\n], | ||||
|        $feature, $feature); | ||||
|     $recv_buf_code .= sprintf | ||||
|       (qq[\t_LIBGTOP_RECV_ptr += sizeof (glibtop_%s);\n], $feature); | ||||
|   } | ||||
|  | ||||
|   $recv_buf_code .= "\n"; | ||||
|   $recv_buf_code .= "\t*recv_buf_ptr = _LIBGTOP_RECV_buf;\n"; | ||||
|   $recv_buf_code .= "\t*recv_size_ptr = _LIBGTOP_RECV_len;\n"; | ||||
|  | ||||
|   if ($orig_retval eq 'pointer(string)') { | ||||
|     $need_temp_storage = 1; | ||||
|     $local_var_decl_code .= "\tchar **_LIBGTOP_TEMP_ptr;\n"; | ||||
|     $local_var_decl_code .= "\tchar *_LIBGTOP_ARRAY_ptr;\n"; | ||||
|     $local_var_decl_code .= "\tchar *_LIBGTOP_ARRAY_base;\n"; | ||||
|     $local_var_decl_code .= "\toff_t _LIBGTOP_ARRAY_offset;\n"; | ||||
|     $local_var_decl_code .= "\toff_t *_LIBGTOP_ARRAY_off_ptr;\n"; | ||||
|  | ||||
|     $recv_buf_code .= "\n"; | ||||
|     $recv_buf_code .= "\t_LIBGTOP_TEMP_len = 0;\n"; | ||||
|     $recv_buf_code .= "\t_LIBGTOP_TEMP_ptr = retval;\n"; | ||||
|     $recv_buf_code .= "\tfor (_LIBGTOP_TEMP_ptr = retval; _LIBGTOP_TEMP_ptr && *_LIBGTOP_TEMP_ptr; _LIBGTOP_TEMP_ptr++)\n"; | ||||
|     $recv_buf_code .= "\t\t_LIBGTOP_TEMP_len += strlen (*_LIBGTOP_TEMP_ptr)+1;\n"; | ||||
|     $recv_buf_code .= "\n"; | ||||
|     $recv_buf_code .= "\t_LIBGTOP_TEMP_len += sizeof (off_t) + 1;\n"; | ||||
|     $recv_buf_code .= "\t_LIBGTOP_TEMP_len += array.number * sizeof (off_t);\n"; | ||||
|     $recv_buf_code .= "\t_LIBGTOP_ARRAY_base = glibtop_malloc_r (server, _LIBGTOP_TEMP_len);"; | ||||
|     $recv_buf_code .= "\t_LIBGTOP_ARRAY_ptr = _LIBGTOP_ARRAY_base;\n"; | ||||
|     $recv_buf_code .= "\t_LIBGTOP_ARRAY_offset = array.number * sizeof (off_t);\n"; | ||||
|     $recv_buf_code .= "\t_LIBGTOP_ARRAY_offset += sizeof (off_t);\n"; | ||||
|     $recv_buf_code .= "\t_LIBGTOP_ARRAY_off_ptr = (off_t *) _LIBGTOP_ARRAY_ptr;\n"; | ||||
|     $recv_buf_code .= "\n"; | ||||
|     $recv_buf_code .= "\t*_LIBGTOP_ARRAY_off_ptr++ = _LIBGTOP_ARRAY_offset;\n"; | ||||
|     $recv_buf_code .= "\tfor (_LIBGTOP_TEMP_ptr = retval; _LIBGTOP_TEMP_ptr && *_LIBGTOP_TEMP_ptr; _LIBGTOP_TEMP_ptr++) {\n"; | ||||
|     $recv_buf_code .= "\t\t*_LIBGTOP_ARRAY_off_ptr++ = _LIBGTOP_ARRAY_offset;\n"; | ||||
|     $recv_buf_code .= "\t\t_LIBGTOP_ARRAY_offset += strlen (*_LIBGTOP_TEMP_ptr)+1;\n"; | ||||
|     $recv_buf_code .= "\t}\n\n"; | ||||
|     $recv_buf_code .= "\t_LIBGTOP_ARRAY_ptr = (char *) _LIBGTOP_ARRAY_off_ptr;\n"; | ||||
|     $recv_buf_code .= "\tfor (_LIBGTOP_TEMP_ptr = retval; _LIBGTOP_TEMP_ptr && *_LIBGTOP_TEMP_ptr; _LIBGTOP_TEMP_ptr++) {\n"; | ||||
|     $recv_buf_code .= "\t\tstrcpy (_LIBGTOP_ARRAY_ptr, *_LIBGTOP_TEMP_ptr);\n"; | ||||
|     $recv_buf_code .= "\t\t_LIBGTOP_ARRAY_ptr += strlen (*_LIBGTOP_TEMP_ptr)+1;\n"; | ||||
|     $recv_buf_code .= "\t}\n\n"; | ||||
|     $recv_buf_code .= "\tif (recv_data_ptr) {\n"; | ||||
|     $recv_buf_code .= "\t\t*recv_data_ptr = _LIBGTOP_ARRAY_base;\n"; | ||||
|     $recv_buf_code .= "\t\t*recv_data_size_ptr = _LIBGTOP_TEMP_len;\n"; | ||||
|     $recv_buf_code .= "\t}\n"; | ||||
|  | ||||
|   } elsif ($line_fields[3] =~ /^array/) { | ||||
|     $recv_buf_code .= "\n"; | ||||
|     $recv_buf_code .= "\tif (recv_data_ptr) {\n"; | ||||
|     $recv_buf_code .= "\t\t*recv_data_ptr = retval;\n"; | ||||
|     $recv_buf_code .= "\t\t*recv_data_size_ptr = array.total;\n"; | ||||
|     $recv_buf_code .= "\t}\n"; | ||||
|   } | ||||
|  | ||||
|   if ($need_temp_storage) { | ||||
|     $local_var_decl_code .= "\tsize_t _LIBGTOP_TEMP_len;\n"; | ||||
|     $local_var_decl_code .= "\tsize_t _LIBGTOP_DATA_len;\n"; | ||||
|     $local_var_decl_code .= "\toff_t _LIBGTOP_DATA_offset;\n"; | ||||
|     $local_var_decl_code .= "\tchar *_LIBGTOP_DATA_ptr;\n"; | ||||
|  | ||||
|     $init_local_var_code .= "\t_LIBGTOP_DATA_len = 0;\n"; | ||||
|     $init_local_var_code .= "\t_LIBGTOP_DATA_offset = 0;\n"; | ||||
|     $init_local_var_code .= "\t_LIBGTOP_DATA_ptr = ". | ||||
|       "(char *) data_ptr;\n"; | ||||
|   } | ||||
|  | ||||
|   $func_decl_code = sprintf | ||||
|     (qq[static int\n_glibtop_demarshal_%s_i (glibtop *server, glibtop_backend *backend, const void *send_ptr, size_t send_size, void *data_ptr, size_t data_size, void **recv_buf_ptr, size_t *recv_size_ptr, void **recv_data_ptr, size_t *recv_data_size_ptr, int *retval_ptr)\n], $feature); | ||||
|  | ||||
|   if (!($call_code eq '')) { | ||||
|     $call_code .= "\n"; | ||||
|   } | ||||
|    | ||||
|   $func_body_code = sprintf | ||||
|     (qq[%s%s%s%s], $size_code, $demarshal_code, $call_code, $recv_buf_code); | ||||
|    | ||||
|   $total_code = sprintf | ||||
|     (qq[%s{\n%s\n%s\n%s\n\treturn 0;\n}\n], | ||||
|      $func_decl_code, $local_var_decl_code, $init_local_var_code, | ||||
|      $func_body_code); | ||||
|    | ||||
|   $total_code = sprintf ("#if GLIBTOP_SUID_%s\n\n%s\n#endif /* GLIBTOP_SUID_%s */\n\n", | ||||
| 			 &toupper($feature), $total_code, | ||||
| 			 &toupper($feature)); | ||||
|  | ||||
|   print $total_code; | ||||
| } | ||||
|  | ||||
| $func_decl_code = sprintf | ||||
|   (qq[int\nglibtop_demarshal_func_i (glibtop *server, glibtop_backend *backend, unsigned command, const void *send_ptr, size_t send_size, void *data_ptr, size_t data_size, void **recv_buf_ptr, size_t *recv_size_ptr, void **recv_data_ptr, size_t *recv_data_size_ptr, int *retval_ptr)]); | ||||
|  | ||||
| $switch_body_code = ''; | ||||
|  | ||||
| for ($nr = 1; $nr <= $feature_count; $nr++) { | ||||
|   $feature = $features{$nr}; | ||||
|  | ||||
|   $switch_body_code .= sprintf | ||||
|     (qq[#if GLIBTOP_SUID_%s\n\tcase GLIBTOP_CMND_%s:\n\t\treturn _glibtop_demarshal_%s_i\n\t\t\t(server, backend, send_ptr, send_size,\n\t\t\t data_ptr, data_size,\n\t\t\t recv_buf_ptr, recv_size_ptr,\n\t\t\t recv_data_ptr, recv_data_size_ptr, retval_ptr);\n#endif /* GLIBTOP_SUID_%s */\n], | ||||
|      &toupper ($feature), &toupper ($feature), $feature, &toupper ($feature)); | ||||
| } | ||||
|  | ||||
| $switch_code = sprintf | ||||
|   (qq[\tswitch (command) {\n%s\tdefault:\n\t\treturn -GLIBTOP_ERROR_INVALID_ARGUMENT;\n\t}\n], $switch_body_code); | ||||
|  | ||||
| $total_code = sprintf | ||||
|   (qq[%s\n{\n%s}\n\n], $func_decl_code, $switch_code); | ||||
|  | ||||
| print $total_code; | ||||
|  | ||||
| 1; | ||||
							
								
								
									
										114
									
								
								backends/server/io.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										114
									
								
								backends/server/io.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,114 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #include "server.h" | ||||
|  | ||||
| void | ||||
| do_output (int s, glibtop_response *resp, const void *recv_ptr, | ||||
| 	   const void *data_ptr) | ||||
| { | ||||
| #ifdef DEBUG | ||||
|     fprintf (stderr, "Really writing %d bytes.\n", | ||||
| 	     sizeof (glibtop_response)); | ||||
| #endif | ||||
|  | ||||
|     if (s == 0) { | ||||
| 	if (write (1, (const void *) resp, sizeof (glibtop_response)) < 0) | ||||
| 	    glibtop_warn_io ("write"); | ||||
|     } else { | ||||
| 	if (send (s, (const void *) resp, sizeof (glibtop_response), 0) < 0) | ||||
| 	    glibtop_warn_io ("send"); | ||||
|     } | ||||
|  | ||||
|     if (resp->recv_size) { | ||||
| #ifdef DEBUG | ||||
| 	fprintf (stderr, "Writing %ld bytes of data.\n", | ||||
| 		 (long) resp->recv_size); | ||||
| #endif | ||||
|  | ||||
| 	if (s == 0) { | ||||
| 	    if (write (1, recv_ptr, resp->recv_size) < 0) | ||||
| 		glibtop_warn_io ("write"); | ||||
| 	} else { | ||||
| 	    if (send (s, recv_ptr, resp->recv_size, 0) < 0) | ||||
| 		glibtop_warn_io ("send"); | ||||
| 	} | ||||
|     } | ||||
|  | ||||
|     if (resp->data_size) { | ||||
| #ifdef DEBUG | ||||
| 	fprintf (stderr, "Writing %ld bytes of extra data.\n", | ||||
| 		 (long) resp->data_size); | ||||
| #endif | ||||
|  | ||||
| 	if (s == 0) { | ||||
| 	    if (write (1, data_ptr, resp->data_size) < 0) | ||||
| 		glibtop_warn_io ("write"); | ||||
| 	} else { | ||||
| 	    if (send (s, data_ptr, resp->data_size, 0) < 0) | ||||
| 		glibtop_warn_io ("send"); | ||||
| 	} | ||||
|     } | ||||
|  | ||||
| } | ||||
|  | ||||
| int | ||||
| do_read (int s, void *ptr, size_t total_size) | ||||
| { | ||||
|     int nread; | ||||
|     char *tmp_ptr; | ||||
|     size_t already_read = 0, remaining = total_size; | ||||
|  | ||||
|     while (already_read < total_size) { | ||||
| 	if (s) | ||||
| 	    nread = recv (s, ptr, remaining, 0); | ||||
| 	else | ||||
| 	    nread = read (0, ptr, remaining); | ||||
|  | ||||
| 	if ((already_read == 0) && (nread == 0)) { | ||||
| 	    glibtop_warn ("pid %d received eof.", getpid ()); | ||||
| 	    return 0; | ||||
| 	} | ||||
|  | ||||
| 	if (nread <= 0) { | ||||
| 	    glibtop_warn_io ("recv"); | ||||
| 	    return 0; | ||||
| 	} | ||||
|  | ||||
| 	already_read += nread; | ||||
| 	remaining -= nread; | ||||
| 	/* (char *) ptr += nread; */ | ||||
| 	tmp_ptr = ptr; | ||||
| 	tmp_ptr += nread; | ||||
| 	ptr = tmp_ptr; | ||||
|  | ||||
| #ifdef DEBUG | ||||
| 	fprintf (stderr, "READ (%d): %d - %d - %d\n", | ||||
| 		 nread, already_read, remaining, total_size); | ||||
| #endif | ||||
|     } | ||||
|  | ||||
|     return already_read; | ||||
| } | ||||
							
								
								
									
										13
									
								
								backends/server/libgtop-server.backend
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								backends/server/libgtop-server.backend
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | ||||
| <?xml version="1.0"?> <!-- -*-xml-*- --> | ||||
| <!DOCTYPE libgtop:backends SYSTEM 'libgtop-backends.dtd'> | ||||
| <libgtop:Backends xmlns:libgtop="http://www.home-of-linux.org/libgtop/1.1"> | ||||
|  | ||||
|   <libgtop:Backend> | ||||
|     <libgtop:Name>glibtop-backend-server</libgtop:Name> | ||||
|     <libgtop:Location> | ||||
|       <libgtop:LibtoolName>libgtop_backend_server.la</libgtop:LibtoolName> | ||||
|       <libgtop:ShlibName>libgtop_backend_server.so</libgtop:ShlibName> | ||||
|     </libgtop:Location> | ||||
|   </libgtop:Backend> | ||||
|  | ||||
| </libgtop:Backends> | ||||
							
								
								
									
										305
									
								
								backends/server/marshal.pl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										305
									
								
								backends/server/marshal.pl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,305 @@ | ||||
| #!/usr/bin/perl | ||||
|  | ||||
| require 'c_types.pl'; | ||||
|  | ||||
| $[ = 1;			# set array base to 1 | ||||
| $, = ' ';		# set output field separator | ||||
| $\ = "\n";		# set output record separator | ||||
|  | ||||
| $always_use_temp_storage = 1; | ||||
|  | ||||
| sub toupper { | ||||
|     local($_) = @_; | ||||
|     tr/a-z/A-Z/; | ||||
|     return $_; | ||||
| } | ||||
|  | ||||
| sub tolower { | ||||
|     local($_) = @_; | ||||
|     tr/A-Z/a-z/; | ||||
|     return $_; | ||||
| } | ||||
|  | ||||
| print '/* marshal.c */'; | ||||
| print "/* This is a generated file.  Please modify `marshal.pl' */"; | ||||
| print ''; | ||||
|  | ||||
| print '#include <backend-server.h>'; | ||||
| print ''; | ||||
| print '#include <glibtop/sysdeps.h>'; | ||||
| print '#include <glibtop/union.h>'; | ||||
| print ''; | ||||
| print '#include "command.h"'; | ||||
| print '#include <glibtop/call-vector.h>'; | ||||
| print ''; | ||||
|  | ||||
| $feature_count = 0; | ||||
|  | ||||
| while (<>) { | ||||
|     chop;	# strip record separator | ||||
|  | ||||
|     if (/^[^#]/) { | ||||
| 	&output($_); | ||||
|     } | ||||
| } | ||||
|  | ||||
| sub output { | ||||
|     local($line) = @_; | ||||
|     @line_fields = split(/\|/, $line, 9999); | ||||
|     $retval = $line_fields[1]; | ||||
|     $feature = $line_fields[2]; | ||||
|     $param_def = $line_fields[4]; | ||||
|  | ||||
|     $orig = $feature; | ||||
|     $feature =~ s/^@//; | ||||
|     $space = $feature; | ||||
|     $space =~ s/./ /g; | ||||
|  | ||||
|     $features{++$feature_count} = $orig; | ||||
|     return if $orig =~ /^@/; | ||||
|  | ||||
|     $orig_retval = $retval; | ||||
|     if ($retval eq 'retval') { | ||||
|       $retval_param = '&retval'; | ||||
|       $call_prefix = ''; | ||||
|       $call_prefix_space = ''; | ||||
|       $prefix = 'retval = '; | ||||
|       $prefix_space = '         '; | ||||
|       $retval = 'int'; | ||||
|     } | ||||
|     elsif ($retval !~ /^void$/) { | ||||
|       $retval_param = 'NULL'; | ||||
|       $prefix = 'retval = '; | ||||
|       $prefix_space = '         '; | ||||
|       $call_prefix = 'retval = '; | ||||
|       $call_prefix_space = '         '; | ||||
|     } | ||||
|     else { | ||||
|       $retval_param = 'NULL'; | ||||
|       $call_prefix = ''; | ||||
|       $call_prefix_space = ''; | ||||
|       $prefix = ''; | ||||
|       $prefix_space = ''; | ||||
|     } | ||||
|  | ||||
|     if ($retval =~ /^(array|pointer)\((.*)\)$/) { | ||||
|       $retval = ($2 eq 'string') ? 'char **' : "$2 *"; | ||||
|     } | ||||
|  | ||||
|     $need_temp_storage = $always_use_temp_storage; | ||||
|     $local_var_init_code = "\t/* variable initialization */\n"; | ||||
|     $local_var_init_code .= "\t_LIBGTOP_SEND_len = 0;\n"; | ||||
|     $local_var_init_code .= "\t_LIBGTOP_DATA_len = 0;\n"; | ||||
|     $local_var_init_code .= "\t_LIBGTOP_SEND_offset = 0;\n"; | ||||
|     $local_var_init_code  .= "\t_LIBGTOP_SEND_ptr = ". | ||||
| 	  "(char *) _LIBGTOP_SEND_buf;\n"; | ||||
|     $marshal_code = "\t/* marshal start */\n"; | ||||
|     $marshal_code .= "\tmemset (_LIBGTOP_SEND_buf, 0, _LIBGTOP_SEND_len);\n"; | ||||
|     $first_param_name = ''; | ||||
|     $size_code = ''; | ||||
|  | ||||
|     $call_param = ''; | ||||
|     $param_decl = ''; | ||||
|     $need_temp_len = 0; | ||||
|     $nr_params = (@params = split(/:/, $param_def, 9999)); | ||||
|     for ($param = 1; $param <= $nr_params; $param++) { | ||||
|       $list = $params[$param]; | ||||
|       $type = $params[$param]; | ||||
|       $type =~ s/\(.*//; | ||||
|       $list =~ s/^.*\(//; | ||||
|       $list =~ s/\)$//; | ||||
|       $count = (@fields = split(/,/, $list, 9999)); | ||||
|       for ($field = 1; $field <= $count; $field++) { | ||||
| 	my $c_type = $typeinfo->{$type}->[1]; | ||||
|  | ||||
| 	if ($first_param_name eq '') { | ||||
| 	  $first_param_name = $fields[$field]; | ||||
| 	} | ||||
|  | ||||
| 	if ($typeinfo->{$type}->[2]) { | ||||
| 	  $need_temp_storage = 1; | ||||
| 	} | ||||
|  | ||||
| 	if ($param_decl eq '') { | ||||
| 	  $param_decl = ",\n            " . $space . '    '; | ||||
| 	} | ||||
| 	else { | ||||
| 	  $param_decl = $param_decl . ', '; | ||||
| 	} | ||||
| 	$param_decl = $param_decl . $c_type . ' ' . $fields[$field]; | ||||
| 	$call_param = $call_param . ', ' . $fields[$field]; | ||||
|  | ||||
| 	$size_code .= "\t_LIBGTOP_SEND_len += "; | ||||
| 	if ($typeinfo->{$type}->[2]) { | ||||
| 	  $size_code .= sprintf ("sizeof (size_t)"); | ||||
| 	} else { | ||||
| 	  $size_code .= sprintf ("sizeof (%s)", $c_type); | ||||
| 	} | ||||
| 	$size_code .= ";\n"; | ||||
|  | ||||
| 	if (defined $sizeof_funcs->{$type}) { | ||||
| 	  $size_code .= "\t_LIBGTOP_DATA_len += "; | ||||
| 	  $size_code .= $sizeof_funcs->{$type}->($fields[$field]); | ||||
| 	  $size_code .= ";\n"; | ||||
| 	} | ||||
|  | ||||
| 	$marshal_code .= "\t_LIBGTOP_SEND_ptr = ". | ||||
| 	  "(char *) _LIBGTOP_SEND_buf + _LIBGTOP_SEND_offset;\n"; | ||||
|  | ||||
| 	if (defined $marshal_funcs->{$type}) { | ||||
| 	  $marshal_code .= $marshal_funcs->{$type}->($c_type, $fields[$field], "\t"); | ||||
| 	} else { | ||||
| 	  $marshal_code .= sprintf ("\tmemcpy (_LIBGTOP_SEND_ptr, %s, %s);\n", | ||||
| 				    '&'.$fields[$field], "sizeof ($c_type)"); | ||||
| 	} | ||||
|  | ||||
| 	$marshal_code .= "\t_LIBGTOP_SEND_offset += "; | ||||
| 	if ($typeinfo->{$type}->[2]) { | ||||
| 	  $marshal_code .= sprintf ("sizeof (size_t)"); | ||||
| 	} else { | ||||
| 	  $marshal_code .= sprintf ("sizeof (%s)", $c_type); | ||||
| 	} | ||||
| 	$marshal_code .= ";\n"; | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     $local_var_code = ""; | ||||
|     $local_var_code .= "\tunsigned _LIBGTOP_SEND_offset, _LIBGTOP_SEND_len;\n"; | ||||
|     $local_var_code .= "\tunsigned _LIBGTOP_DATA_len;\n"; | ||||
|     if ($need_temp_len) { | ||||
|       $local_var_code .= "\tunsigned _LIBGTOP_SEND_temp_len;\n"; | ||||
|     } | ||||
|     $local_var_code .= "\tvoid *_LIBGTOP_SEND_buf, *_LIBGTOP_DATA_buf;\n"; | ||||
|     $local_var_code .= "\tchar *_LIBGTOP_SEND_ptr, *_LIBGTOP_DATA_ptr;\n"; | ||||
|     if ($retval !~ /^void$/) { | ||||
|       $local_var_code .= sprintf ("\t%s retval = (%s) 0;\n", | ||||
| 				  $retval, $retval); | ||||
|     } | ||||
|  | ||||
|     $total_code = ''; | ||||
|  | ||||
|     $send_buf_code = "\t/* send buffer */\n"; | ||||
|     $send_buf_code .= "\t_LIBGTOP_SEND_buf = "; | ||||
|     if ($need_temp_storage) { | ||||
|       $send_buf_code .= "glibtop_malloc_r (server, _LIBGTOP_SEND_len+1)"; | ||||
|     } else { | ||||
|       $send_buf_code .= '(void *) &'.$first_param_name; | ||||
|     } | ||||
|     $send_buf_code .= ";\n\n"; | ||||
|  | ||||
|     $send_buf_code .= "\t/* data buffer */\n"; | ||||
|     $send_buf_code .= "\t_LIBGTOP_DATA_buf = "; | ||||
|     if ($need_temp_storage) { | ||||
|       $send_buf_code .= "glibtop_malloc_r (server, _LIBGTOP_DATA_len+1)"; | ||||
|     } else { | ||||
|       $send_buf_code .= 'NULL'; | ||||
|     } | ||||
|     $send_buf_code .= ";\n"; | ||||
|     $send_buf_code .= "\t_LIBGTOP_DATA_ptr = _LIBGTOP_DATA_buf;\n"; | ||||
|  | ||||
|     $call_code = ''; | ||||
|     $call_code .= sprintf ("\t%sglibtop_call_i (server, closure, GLIBTOP_CMND_%s,\n", | ||||
| 			   $call_prefix, &toupper($feature)); | ||||
|     $call_code .= sprintf ("\t\t\t%s%s, %s,\n", $call_prefix_space, | ||||
| 			   "_LIBGTOP_SEND_len", "_LIBGTOP_SEND_buf"); | ||||
|     $call_code .= sprintf ("\t\t\t%s%s, %s,\n", $call_prefix_space, | ||||
| 			   "_LIBGTOP_DATA_len", "_LIBGTOP_DATA_buf"); | ||||
|     if ($line_fields[3] eq '') { | ||||
|       $call_code .= sprintf ("\t\t\t%s0, NULL,\n", $call_prefix_space); | ||||
|     } elsif ($line_fields[3] eq  'array') { | ||||
|       $call_code .= sprintf ("\t\t\t%ssizeof (glibtop_array), array,\n", | ||||
| 			     $call_prefix_space); | ||||
|     } else { | ||||
|       $call_code .= sprintf ("\t\t\t%ssizeof (glibtop_%s), buf,\n", | ||||
| 			     $call_prefix_space, $feature); | ||||
|     } | ||||
|     $call_code .= sprintf ("\t\t\t%s%s);\n", $call_prefix_space, $retval_param); | ||||
|  | ||||
|     if ($need_temp_storage) { | ||||
|       $send_buf_free_code = "\tglibtop_free_r (server, _LIBGTOP_SEND_buf);\n"; | ||||
|       $send_buf_free_code .= "\tglibtop_free_r (server, _LIBGTOP_DATA_buf);\n"; | ||||
|     } else { | ||||
|       $send_buf_free_code = ""; | ||||
|     } | ||||
|  | ||||
|     if (!($size_code eq '')) { | ||||
|       $size_code = sprintf (qq[\t/* send size */\n%s\n], $size_code); | ||||
|     } | ||||
|  | ||||
|     if ($orig_retval eq 'pointer(string)') { | ||||
|       $call_code .= "\n"; | ||||
|       $local_var_code .= "\tchar *_LIBGTOP_ARRAY_ptr, **ptrlist;\n"; | ||||
|       $local_var_code .= "\toff_t *_LIBGTOP_ARRAY_off_ptr;\n"; | ||||
|       $local_var_code .= "\tint i;\n"; | ||||
|       $call_code .= "\tptrlist = glibtop_calloc_r (server, array->number+1, sizeof (char *));\n"; | ||||
|       $call_code .= "\t_LIBGTOP_ARRAY_off_ptr = (off_t *) retval;\n"; | ||||
|       $call_code .= "\t_LIBGTOP_ARRAY_ptr = (char *) retval;\n"; | ||||
|       $call_code .= "\t_LIBGTOP_ARRAY_off_ptr++;\n\n"; | ||||
|       $call_code .= "\tfor (i = 0; i < array->number; i++)\n"; | ||||
|       $call_code .= "\t\tptrlist [i] = glibtop_strdup_r (server, _LIBGTOP_ARRAY_ptr + *_LIBGTOP_ARRAY_off_ptr++);\n"; | ||||
|       $call_code .= "\tptrlist [array->number] = NULL;\n\n"; | ||||
|       $call_code .= "\tglibtop_free_r (server, retval);\n"; | ||||
|       $call_code .= "\tretval = ptrlist;\n"; | ||||
|     } | ||||
|  | ||||
|     $total_code .= sprintf ("%s%s\n%s\n%s\n%s\n", | ||||
| 			    $size_code, $send_buf_code, $marshal_code, | ||||
| 			    $call_code, $send_buf_free_code); | ||||
|  | ||||
|     $return_code = ''; | ||||
|     if ($retval !~ /^void$/) { | ||||
|       $return_code .= "\treturn retval;\n"; | ||||
|     } else { | ||||
|       $return_code .= "\treturn;\n"; | ||||
|     } | ||||
|  | ||||
|     $total_code .= $return_code; | ||||
|  | ||||
|     $func_decl = 'static '.$retval."\n"; | ||||
|     if ($line_fields[3] eq '') { | ||||
|       $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure%s)\n", | ||||
| 			     $feature, $param_decl); | ||||
|     } elsif ($line_fields[3] eq 'array') { | ||||
|       $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array%s)\n", | ||||
| 			     $feature, $param_decl); | ||||
|     } elsif ($line_fields[3] =~ /^array/) { | ||||
|       $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array, %s *buf%s)\n", | ||||
| 			     $feature, 'glibtop_'.$feature, $param_decl); | ||||
|     } else { | ||||
|       $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, %s *buf%s)\n", | ||||
| 			     $feature, 'glibtop_'.$feature, $param_decl); | ||||
|     } | ||||
|  | ||||
|     $total_code = sprintf ("%s{\n%s\n%s\n%s\n%s}\n", $func_decl, | ||||
| 			   $local_var_code, $local_var_init_code, | ||||
| 			   $total_code); | ||||
|  | ||||
|  | ||||
|     $total_code = sprintf ("#if GLIBTOP_SUID_%s\n\n%s\n#endif /* GLIBTOP_SUID_%s */\n\n", | ||||
| 			   &toupper($feature), $total_code, | ||||
| 			   &toupper($feature)); | ||||
|  | ||||
|     print $total_code; | ||||
| } | ||||
|  | ||||
| $call_vector_code = ''; | ||||
| for ($nr = 1; $nr <= $feature_count; $nr++) { | ||||
|   $feature = $features{$nr}; | ||||
|  | ||||
|   $orig = $feature; | ||||
|   $feature =~ s/^@//; | ||||
|  | ||||
|   if ($orig =~ /^@/) { | ||||
|     $call_vector_code .= sprintf (qq[\tNULL,\n]); | ||||
|   } else { | ||||
|     $call_vector_code .= sprintf | ||||
|       (qq[\#if GLIBTOP_SUID_%s\n\t_glibtop_get_%s_c,\n\#else\n\tNULL,\n\#endif\n], | ||||
|        &toupper($feature), $feature); | ||||
|   } | ||||
| } | ||||
|  | ||||
| print 'glibtop_call_vector glibtop_backend_server_call_vector = {'; | ||||
| print $call_vector_code; | ||||
| print '};'; | ||||
| print ''; | ||||
|  | ||||
							
								
								
									
										46
									
								
								backends/server/read.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								backends/server/read.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,46 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #include <backend-server.h> | ||||
|  | ||||
| void | ||||
| glibtop_read_i (backend_server_private *priv, size_t size, void *buf) | ||||
| { | ||||
|     int ret = 0; | ||||
|  | ||||
| #ifdef DEBUG | ||||
|     fprintf (stderr, "LIBRARY: really reading %d bytes from %d.\n", | ||||
| 	     size, priv->input [0]); | ||||
| #endif | ||||
|  | ||||
|     ret = read (priv->input [0], buf, size); | ||||
|  | ||||
| #ifdef DEBUG | ||||
|     fprintf (stderr, "LIBRARY: read %d bytes.\n", ret); | ||||
| #endif | ||||
|  | ||||
|     if (ret < 0) | ||||
| 	glibtop_error_io_r (priv->server, "read %d bytes", size); | ||||
| } | ||||
							
								
								
									
										58
									
								
								backends/server/read_data.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								backends/server/read_data.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,58 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #include <backend-server.h> | ||||
|  | ||||
| void * | ||||
| glibtop_read_data_i (backend_server_private *priv) | ||||
| { | ||||
|     size_t size; | ||||
|     void *ptr; | ||||
|     int ret; | ||||
|  | ||||
| #ifdef DEBUG | ||||
|     fprintf (stderr, "LIBRARY: reading %d data bytes.\n", sizeof (size_t)); | ||||
| #endif | ||||
|  | ||||
|     ret = read (priv->input [0], (void *)&size, sizeof (size_t)); | ||||
|  | ||||
|     if (ret < 0) | ||||
| 	glibtop_error_io_r (priv->server, "read data size"); | ||||
|  | ||||
| #ifdef DEBUG | ||||
|     fprintf (stderr, "LIBRARY: really reading %d data bytes (ret = %d).\n", size, ret); | ||||
| #endif | ||||
|  | ||||
|     if (!size) return NULL;	 | ||||
|  | ||||
|     ptr = glibtop_malloc_r (priv->server, size); | ||||
| 	 | ||||
|     ret = read (priv->input [0], ptr, size); | ||||
|  | ||||
|     if (ret < 0) | ||||
| 	glibtop_error_io_r (priv->server, "read data %d bytes"); | ||||
|  | ||||
|     return ptr; | ||||
| } | ||||
							
								
								
									
										190
									
								
								backends/server/server.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										190
									
								
								backends/server/server.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,190 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #include "server.h" | ||||
|  | ||||
| static glibtop _glibtop_global_server; | ||||
| glibtop *glibtop_global_server = &_glibtop_global_server; | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/union.h> | ||||
| #include <glibtop/sysdeps.h> | ||||
|  | ||||
| #include <sys/utsname.h> | ||||
|  | ||||
| const unsigned long glibtop_server_features = | ||||
| GLIBTOP_SUID_CPU + | ||||
| GLIBTOP_SUID_MEM + | ||||
| GLIBTOP_SUID_SWAP + | ||||
| GLIBTOP_SUID_UPTIME + | ||||
| GLIBTOP_SUID_LOADAVG + | ||||
| GLIBTOP_SUID_SHM_LIMITS + | ||||
| GLIBTOP_SUID_MSG_LIMITS + | ||||
| GLIBTOP_SUID_SEM_LIMITS + | ||||
| GLIBTOP_SUID_PROCLIST + | ||||
| GLIBTOP_SUID_PROC_STATE + | ||||
| GLIBTOP_SUID_PROC_UID + | ||||
| GLIBTOP_SUID_PROC_MEM + | ||||
| GLIBTOP_SUID_PROC_TIME + | ||||
| GLIBTOP_SUID_PROC_SIGNAL + | ||||
| GLIBTOP_SUID_PROC_KERNEL + | ||||
| GLIBTOP_SUID_PROC_SEGMENT + | ||||
| GLIBTOP_SUID_PROC_ARGS + | ||||
| GLIBTOP_SUID_PROC_MAP + | ||||
| GLIBTOP_SUID_NETINFO + | ||||
| GLIBTOP_SUID_NETLOAD + | ||||
| GLIBTOP_SUID_INTERFACE_NAMES + | ||||
| GLIBTOP_SUID_PPP; | ||||
|  | ||||
| #include <fcntl.h> | ||||
| #include <locale.h> | ||||
|  | ||||
| int | ||||
| main(int argc, char *argv[]) | ||||
| { | ||||
|     struct utsname uts; | ||||
|     int uid, euid, gid, egid; | ||||
|     glibtop *server; | ||||
|  | ||||
|     /* !!! WE ARE ROOT HERE - CHANGE WITH CAUTION !!! */ | ||||
|  | ||||
|     uid = getuid (); euid = geteuid (); | ||||
|     gid = getgid (); egid = getegid (); | ||||
|  | ||||
|     if (uname (&uts) < 0) _exit (1); | ||||
|  | ||||
|     if (strcmp (uts.sysname, LIBGTOP_COMPILE_SYSTEM) || | ||||
| 	strcmp (uts.release, LIBGTOP_COMPILE_RELEASE) || | ||||
| 	strcmp (uts.machine, LIBGTOP_COMPILE_MACHINE)) { | ||||
| 	fprintf (stderr, "Can only run on %s %s %s\n", | ||||
| 		 LIBGTOP_COMPILE_SYSTEM, | ||||
| 		 LIBGTOP_COMPILE_RELEASE, | ||||
| 		 LIBGTOP_COMPILE_MACHINE); | ||||
| 	_exit (1); | ||||
|     } | ||||
|  | ||||
|     server = glibtop_global_server; | ||||
| 	 | ||||
|     if (!server->_priv) | ||||
| 	server->_priv = glibtop_calloc_r | ||||
| 	    (server, 1, sizeof (glibtop_server_private)); | ||||
|  | ||||
|     glibtop_init_p (server, 0, 0); | ||||
|  | ||||
|     if (setreuid (euid, uid)) _exit (1); | ||||
|  | ||||
|     if (setregid (egid, gid)) _exit (1); | ||||
|  | ||||
|     /* !!! END OF SUID ROOT PART !!! */ | ||||
|  | ||||
|     handle_slave_connection (0, 0); | ||||
|  | ||||
|     _exit (0); | ||||
| } | ||||
|  | ||||
| void | ||||
| handle_slave_connection (int input, int output) | ||||
| { | ||||
|     glibtop_command _cmnd, *cmnd = &_cmnd; | ||||
|     glibtop *server = glibtop_global_server; | ||||
|  | ||||
|     // glibtop_send_version_i (glibtop_global_server, output); | ||||
|  | ||||
|     while (do_read (input, cmnd, sizeof (glibtop_command))) { | ||||
| 	size_t recv_size = 0, send_size = 0, recv_data_size = 0; | ||||
| 	void *recv_ptr = NULL, *recv_data_ptr = NULL, *data_ptr = NULL; | ||||
| 	char parameter [BUFSIZ]; | ||||
| 	int retval, func_retval; | ||||
| 	glibtop_response resp; | ||||
|  | ||||
| #ifdef DEBUG | ||||
| 	fprintf (stderr, "Slave %d received command " | ||||
| 		 "%ld from client.\n", getpid (), (long) cmnd->command); | ||||
| #endif | ||||
|  | ||||
| 	if (cmnd->send_size >= BUFSIZ) | ||||
| 	    glibtop_error ("Client sent %d bytes, but buffer is %d", | ||||
| 			   cmnd->send_size, BUFSIZ); | ||||
| 	else if (cmnd->param_size >= BUFSIZ) | ||||
| 	    glibtop_error ("Client sent %d bytes, but buffer is %d", | ||||
| 			   cmnd->param_size, BUFSIZ); | ||||
|  | ||||
| 	memset (parameter, 0, sizeof (parameter)); | ||||
|  | ||||
| 	if (cmnd->send_size) { | ||||
| #ifdef DEBUG | ||||
| 	    fprintf (stderr, "Client has %d bytes of data.\n", | ||||
| 		     cmnd->send_size); | ||||
| #endif | ||||
|  | ||||
| 	    send_size = cmnd->send_size; | ||||
| 	    do_read (input, parameter, send_size); | ||||
| 	} else if (cmnd->param_size) { | ||||
| #ifdef DEBUG | ||||
| 	    fprintf (stderr, "Client has %d bytes of parameter data.\n", | ||||
| 		     cmnd->param_size); | ||||
| #endif | ||||
| 	    send_size = cmnd->param_size; | ||||
| 	    memcpy (parameter, cmnd->parameter, send_size); | ||||
| 	} | ||||
|  | ||||
| 	if (cmnd->data_size) { | ||||
| #ifdef DEBUG | ||||
| 	    fprintf (stderr, "CLIENT has %d bytes of extra data for us.\n", | ||||
| 		     cmnd->data_size); | ||||
| #endif | ||||
|  | ||||
| 	    data_ptr = glibtop_malloc_r (server, cmnd->data_size); | ||||
| 	    do_read (input, data_ptr, cmnd->data_size); | ||||
| 	} | ||||
|  | ||||
| 	retval = glibtop_demarshal_func_i (server, NULL, | ||||
| 					   cmnd->command, | ||||
| 					   parameter, send_size, | ||||
| 					   data_ptr, cmnd->data_size, | ||||
| 					   &recv_ptr, &recv_size, | ||||
| 					   &recv_data_ptr, &recv_data_size, | ||||
| 					   &func_retval); | ||||
|  | ||||
| #ifdef DEBUG | ||||
| 	fprintf (stderr, "Retval %d / %d - %p - %d\n", | ||||
| 		 retval, func_retval, recv_ptr, recv_size); | ||||
|  | ||||
| 	if (recv_data_size) { | ||||
| 	    fprintf (stderr, "Returning %d bytes of data from %p.\n", | ||||
| 		     recv_data_size, recv_data_ptr); | ||||
| 	} | ||||
| #endif | ||||
|  | ||||
| 	memset (&resp, 0, sizeof (glibtop_response)); | ||||
|  | ||||
| 	resp.retval = retval; | ||||
| 	resp.glibtop_errno = func_retval; | ||||
| 	resp.recv_size = recv_size; | ||||
| 	resp.data_size = recv_data_size; | ||||
|  | ||||
| 	do_output (output, &resp, recv_ptr, recv_data_ptr); | ||||
|     }		 | ||||
| } | ||||
							
								
								
									
										85
									
								
								backends/server/server.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								backends/server/server.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,85 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #ifndef __GLIBTOP_DAEMON_H__ | ||||
| #define __GLIBTOP_DAEMON_H__ | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/error.h> | ||||
|  | ||||
| #include <glibtop/open.h> | ||||
| #include <glibtop/union.h> | ||||
| #include <glibtop/xmalloc.h> | ||||
| #include <glibtop/parameter.h> | ||||
|  | ||||
| #include <fcntl.h> | ||||
| #include <sys/wait.h> | ||||
| #include <sys/socket.h> | ||||
| #include <syslog.h> | ||||
|  | ||||
| #include <glibtop/backend.h> | ||||
| #include <glibtop-backend-private.h> | ||||
|  | ||||
| #include "command.h" | ||||
|  | ||||
| BEGIN_LIBGTOP_DECLS | ||||
|  | ||||
| /* Some don't have LOG_PERROR */ | ||||
| #ifndef LOG_PERROR | ||||
| #define LOG_PERROR 0 | ||||
| #endif | ||||
|  | ||||
| #define LIBGTOP_VERSION_STRING "Libgtop %s server version %s (%u,%u,%u,%u)." | ||||
|  | ||||
| #if defined(HAVE_GETDTABLESIZE) | ||||
| #define GET_MAX_FDS() getdtablesize() | ||||
| #else | ||||
| /* Fallthrough case - please add other #elif cases above | ||||
|    for different OS's as necessary */ | ||||
| #define GET_MAX_FDS() 256 | ||||
| #endif | ||||
|  | ||||
| void | ||||
| do_output (int s, glibtop_response *resp, const void *recv_ptr, | ||||
| 	   const void *data_ptr); | ||||
|  | ||||
| int | ||||
| do_read (int s, void *ptr, size_t total_size); | ||||
|  | ||||
| void | ||||
| handle_slave_connection (int input, int output); | ||||
|  | ||||
| int | ||||
| glibtop_demarshal_func_i (glibtop *server, glibtop_backend *backend, unsigned command, const void *send_ptr, size_t send_size, void *data_ptr, size_t data_size, void **recv_buf_ptr, size_t *recv_size_ptr, void **recv_data_ptr, size_t *recv_data_size_ptr, int *retval_ptr); | ||||
|  | ||||
| void | ||||
| glibtop_send_version_i (glibtop *server, int fd); | ||||
|  | ||||
| extern int enable_debug; | ||||
| extern int verbose_output; | ||||
|  | ||||
| END_LIBGTOP_DECLS | ||||
|  | ||||
| #endif | ||||
							
								
								
									
										62
									
								
								backends/server/version.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								backends/server/version.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,62 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #include "server.h" | ||||
|  | ||||
| void | ||||
| glibtop_send_version_i (glibtop *server, int fd) | ||||
| { | ||||
|     char buffer [BUFSIZ]; | ||||
|     size_t size; | ||||
|  | ||||
|     sprintf (buffer, LIBGTOP_VERSION_STRING, | ||||
| 	     LIBGTOP_VERSION, LIBGTOP_SERVER_VERSION, | ||||
| 	     sizeof (glibtop_command), | ||||
| 	     sizeof (glibtop_response), | ||||
| 	     sizeof (glibtop_union), | ||||
| 	     sizeof (glibtop_sysdeps)); | ||||
| 	 | ||||
|     size = strlen (buffer) + 1; | ||||
|  | ||||
| #ifdef DEBUG | ||||
|     fprintf (stderr, "SERVER ID: |%s|\n", buffer); | ||||
| #endif | ||||
|  | ||||
|     if (fd == 0) { | ||||
| 	if (write (1, (const void *) &size, sizeof (size)) < 0) | ||||
| 	    glibtop_warn_io_r (server, "write"); | ||||
|     } else { | ||||
| 	if (send (fd, (const void *) &size, sizeof (size), 0) < 0) | ||||
| 	    glibtop_warn_io_r (server, "send"); | ||||
|     } | ||||
|  | ||||
|     if (fd == 0) { | ||||
| 	if (write (1, (const void *) buffer, size) < 0) | ||||
| 	    glibtop_warn_io_r (server, "write"); | ||||
|     } else { | ||||
| 	if (send (fd, (const void *) buffer, size, 0) < 0) | ||||
| 	    glibtop_warn_io_r (server, "send"); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										43
									
								
								backends/server/write.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								backends/server/write.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,43 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #include <backend-server.h> | ||||
|  | ||||
| void | ||||
| glibtop_write_i (backend_server_private *priv, size_t size, const void *buf) | ||||
| { | ||||
|     int ret; | ||||
|  | ||||
|     if (size == 0) return; | ||||
|  | ||||
| #ifdef DEBUG | ||||
|     fprintf (stderr, "LIBRARY: really writing %d bytes.\n", size); | ||||
| #endif | ||||
|  | ||||
|     ret = write (priv->output [1], buf, size); | ||||
|  | ||||
|     if (ret < 0) | ||||
| 	glibtop_error_io_r (priv->server, "write %d bytes", size); | ||||
| } | ||||
							
								
								
									
										7
									
								
								backends/sysdeps/.cvsignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								backends/sysdeps/.cvsignore
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| .deps | ||||
| .libs | ||||
| Makefile | ||||
| Makefile.in | ||||
| *.lo | ||||
| *.la | ||||
| marshal.c | ||||
							
								
								
									
										60
									
								
								backends/sysdeps/ChangeLog
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								backends/sysdeps/ChangeLog
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,60 @@ | ||||
| 2000-11-26  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* glibtop-backend-private.h: Removed. | ||||
|  | ||||
| 	* backend-sysdeps.h: New files. | ||||
|  | ||||
| 	* backend-sysdeps.c (_open_sysdeps): Don't overwrite | ||||
| 	`backend->_priv'. | ||||
|  | ||||
| 2000-11-22  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* Makefile.am: Link libgtop_backend_sysdeps.la against | ||||
| 	$(top_builddir)/sysdeps/$(sysdeps_dir)/libgtop_sysdeps.la and | ||||
| 	$(top_builddir)/lib/libgtop_server.la. | ||||
|  | ||||
| 	* libgtop-sysdeps.backend: Removed the ExtraLibs section. | ||||
|  | ||||
| 2000-02-22  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* backend-sysdeps.c (LibGTopBackendInfo): Call this | ||||
| 	`LibGTopBackendInfo_Sysdeps' when we don't use gmodule. | ||||
|  | ||||
| 2000-02-22  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* Makefile.am: Only install the libs in $(LIBGTOP_BACKEND_DIR) | ||||
| 	when we LIBGTOP_USE_GMODULE and in $(libdir) otherwise. | ||||
|  | ||||
| 2000-01-22  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* libgtop-sysdeps.backend: Added "ExtraLibs" section to | ||||
| 	load `-lgtop_sysdeps'. | ||||
|  | ||||
| 2000-01-12  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* Makefile.am: Install everything in $(LIBGTOP_BACKEND_DIR). | ||||
|  | ||||
| 	* libgtop-sysdeps.backend: New file. | ||||
|  | ||||
| 	* backend-sysdeps.c (glibtop_backend_sysdeps): Renamed to | ||||
| 	`LibGTopBackendInfo'. | ||||
|  | ||||
| 2000-01-12  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* marshal.pl: Create the `_glibtop_init_hook_s' as well. | ||||
|  | ||||
| 	* marshal.pl: Don't create code for things which are now | ||||
| 	in the new `glibtop-backend-common' backend. | ||||
|  | ||||
| 2000-01-02  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* marshal.pl: New file. Automatically creates `marshal.c'. | ||||
| 	* call-vector.c: Removed. | ||||
|  | ||||
| 2000-01-01  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	Initial version of the "glibtop-backend-sysdeps" backend. | ||||
|  | ||||
| 	* backend-sysdeps.c: New file. | ||||
| 	* glibtop-backend-private.h: New file. | ||||
|  | ||||
							
								
								
									
										47
									
								
								backends/sysdeps/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								backends/sysdeps/Makefile.am
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,47 @@ | ||||
| LINK		= $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@ | ||||
|  | ||||
| INCLUDES	= @INCLUDES@ | ||||
|  | ||||
| backenddir	= @LIBGTOP_BACKEND_DIR@ | ||||
|  | ||||
| if LIBGTOP_USE_GMODULE | ||||
| backendlibdir	= $(backenddir) | ||||
| else | ||||
| backendlibdir	= $(libdir) | ||||
| endif | ||||
|  | ||||
| dynamic_ldflags	= @libgtop_dynamic_ldflags@ | ||||
|  | ||||
| backend_DATA = \ | ||||
| 	libgtop-sysdeps.backend | ||||
|  | ||||
| noinst_HEADERS = \ | ||||
| 	backend-sysdeps.h | ||||
|  | ||||
| backendlib_LTLIBRARIES = \ | ||||
| 	libgtop_backend_sysdeps.la | ||||
|  | ||||
| libgtop_backend_sysdeps_la_SOURCES = \ | ||||
| 	backend-sysdeps.c		\ | ||||
| 	marshal.c | ||||
|  | ||||
| libgtop_backend_sysdeps_la_LDFLAGS = \ | ||||
| 	$(LT_VERSION_INFO) $(dynamic_ldflags) | ||||
|  | ||||
| libgtop_backend_sysdeps_la_LIBADD = \ | ||||
| 	$(top_builddir)/sysdeps/$(sysdeps_dir)/libgtop_sysdeps.la | ||||
| 	$(top_builddir)/lib/libgtop_server.la | ||||
|  | ||||
| BUILT_SOURCES = \ | ||||
| 	marshal.c | ||||
|  | ||||
| EXTRA_DIST = \ | ||||
| 	marshal.pl	\ | ||||
| 	libgtop-sysdeps.backend | ||||
|  | ||||
| CLEANFILES = $(BUILT_SOURCES) | ||||
|  | ||||
| marshal.c: marshal.pl $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl | ||||
| 	$(PERL) -I $(top_srcdir)/scripts $(srcdir)/marshal.pl < $(top_srcdir)/features.def > tmp-t | ||||
| 	mv tmp-t marshal.c | ||||
|  | ||||
							
								
								
									
										76
									
								
								backends/sysdeps/backend-sysdeps.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								backends/sysdeps/backend-sysdeps.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,76 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #include <backend-sysdeps.h> | ||||
|  | ||||
| static int | ||||
| _open_sysdeps (glibtop_server *, glibtop_backend *, u_int64_t, const char **); | ||||
|  | ||||
| static int | ||||
| _close_sysdeps (glibtop_server *, glibtop_backend *, void *); | ||||
|  | ||||
| extern glibtop_call_vector glibtop_backend_sysdeps_call_vector; | ||||
|  | ||||
| #ifdef LIBGTOP_USE_GMODULE | ||||
| glibtop_backend_info LibGTopBackendInfo = { | ||||
|     "glibtop-backend-sysdeps", _open_sysdeps, _close_sysdeps, | ||||
|     &glibtop_backend_sysdeps_call_vector | ||||
| }; | ||||
| #else | ||||
| glibtop_backend_info LibGTopBackendInfo_Sysdeps = { | ||||
|     "glibtop-backend-sysdeps", _open_sysdeps, _close_sysdeps, | ||||
|     &glibtop_backend_sysdeps_call_vector | ||||
| }; | ||||
| #endif | ||||
|  | ||||
| static int | ||||
| _open_sysdeps (glibtop_server *server, glibtop_backend *backend, | ||||
| 	       u_int64_t features, const char **backend_args) | ||||
| { | ||||
|     glibtop_init_func_t *init_fkt; | ||||
|  | ||||
|     /* Do the initialization, but only if not already initialized. */ | ||||
|  | ||||
|     if ((server->flags & _GLIBTOP_INIT_STATE_SYSDEPS) == 0) { | ||||
| 	glibtop_open_s (server, "glibtop", features, 0); | ||||
|  | ||||
| 	for (init_fkt = _glibtop_init_hook_s; *init_fkt; init_fkt++) | ||||
| 	    (*init_fkt) (server); | ||||
|  | ||||
| 	server->info->sysdeps.pointer_size = sizeof (void*)*8; | ||||
| 		 | ||||
| 	server->flags |= _GLIBTOP_INIT_STATE_SYSDEPS; | ||||
|     } | ||||
|  | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| static int | ||||
| _close_sysdeps (glibtop_server *server, glibtop_backend *backend, | ||||
| 		void *closure) | ||||
| { | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
							
								
								
									
										37
									
								
								backends/sysdeps/backend-sysdeps.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								backends/sysdeps/backend-sysdeps.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,37 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #ifndef __GLIBTOP_BACKEND_SYSDEPS_H__ | ||||
| #define __GLIBTOP_BACKEND_SYSDEPS_H__ | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/global.h> | ||||
|  | ||||
| #include <glibtop/open.h> | ||||
| #include <glibtop/xmalloc.h> | ||||
| #include <glibtop/glibtop-backend.h> | ||||
| #include <glibtop/glibtop-backend-info.h> | ||||
|  | ||||
| #endif | ||||
							
								
								
									
										13
									
								
								backends/sysdeps/libgtop-sysdeps.backend
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								backends/sysdeps/libgtop-sysdeps.backend
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | ||||
| <?xml version="1.0"?> <!-- -*-xml-*- --> | ||||
| <!DOCTYPE libgtop:backends SYSTEM 'libgtop-backends.dtd'> | ||||
| <libgtop:Backends xmlns:libgtop="http://www.home-of-linux.org/libgtop/1.1"> | ||||
|  | ||||
|   <libgtop:Backend> | ||||
|     <libgtop:Name>glibtop-backend-sysdeps</libgtop:Name> | ||||
|     <libgtop:Location> | ||||
|       <libgtop:LibtoolName>libgtop_backend_sysdeps.la</libgtop:LibtoolName> | ||||
|       <libgtop:ShlibName>libgtop_backend_sysdeps.so</libgtop:ShlibName> | ||||
|     </libgtop:Location> | ||||
|   </libgtop:Backend> | ||||
|  | ||||
| </libgtop:Backends> | ||||
							
								
								
									
										195
									
								
								backends/sysdeps/marshal.pl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										195
									
								
								backends/sysdeps/marshal.pl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,195 @@ | ||||
| #!/usr/bin/perl | ||||
|  | ||||
| require 'c_types.pl'; | ||||
|  | ||||
| $[ = 1;			# set array base to 1 | ||||
| $, = ' ';		# set output field separator | ||||
| $\ = "\n";		# set output record separator | ||||
|  | ||||
| $always_use_temp_storage = 1; | ||||
|  | ||||
| sub toupper { | ||||
|     local($_) = @_; | ||||
|     tr/a-z/A-Z/; | ||||
|     return $_; | ||||
| } | ||||
|  | ||||
| sub tolower { | ||||
|     local($_) = @_; | ||||
|     tr/A-Z/a-z/; | ||||
|     return $_; | ||||
| } | ||||
|  | ||||
| print '/* marshal.c */'; | ||||
| print "/* This is a generated file.  Please modify `marshal.pl' */"; | ||||
| print ''; | ||||
|  | ||||
| print '#include <backend-sysdeps.h>'; | ||||
| print ''; | ||||
| print '#include <glibtop/sysdeps.h>'; | ||||
| print '#include <glibtop/union.h>'; | ||||
| print ''; | ||||
| print '#include <glibtop/call-vector.h>'; | ||||
| print ''; | ||||
|  | ||||
| $feature_count = 0; | ||||
|  | ||||
| while (<>) { | ||||
|     chop;	# strip record separator | ||||
|  | ||||
|     if (/^[^#]/) { | ||||
| 	&output($_); | ||||
|     } | ||||
| } | ||||
|  | ||||
| sub output { | ||||
|     local($line) = @_; | ||||
|     @line_fields = split(/\|/, $line, 9999); | ||||
|     $retval = $line_fields[1]; | ||||
|     $feature = $line_fields[2]; | ||||
|     $param_def = $line_fields[4]; | ||||
|  | ||||
|     $orig = $feature; | ||||
|     $feature =~ s/^@//; | ||||
|     $space = $feature; | ||||
|     $space =~ s/./ /g; | ||||
|  | ||||
|     $features{++$feature_count} = $orig; | ||||
|  | ||||
|     return if $orig =~ /^@/; | ||||
|  | ||||
|     if ($retval eq 'retval') { | ||||
|       $retval_param = '&retval'; | ||||
|       $call_prefix = ''; | ||||
|       $call_prefix_space = ''; | ||||
|       $prefix = 'retval = '; | ||||
|       $prefix_space = '         '; | ||||
|       $retval = 'int'; | ||||
|     } | ||||
|     elsif ($retval !~ /^void$/) { | ||||
|       $retval_param = 'NULL'; | ||||
|       $prefix = 'retval = '; | ||||
|       $prefix_space = '         '; | ||||
|       $call_prefix = 'retval = '; | ||||
|       $call_prefix_space = '         '; | ||||
|     } | ||||
|     else { | ||||
|       $retval_param = 'NULL'; | ||||
|       $call_prefix = ''; | ||||
|       $call_prefix_space = ''; | ||||
|       $prefix = ''; | ||||
|       $prefix_space = ''; | ||||
|     } | ||||
|  | ||||
|     if ($retval =~ /^(array|pointer)\((.*)\)$/) { | ||||
|       $retval = ($2 eq 'string') ? 'char **' : "$2 *"; | ||||
|     } | ||||
|  | ||||
|     $need_temp_storage = $always_use_temp_storage; | ||||
|     $first_param_name = ''; | ||||
|  | ||||
|     $call_param = ''; | ||||
|     $param_decl = ''; | ||||
|     $need_temp_len = 0; | ||||
|     $nr_params = (@params = split(/:/, $param_def, 9999)); | ||||
|     for ($param = 1; $param <= $nr_params; $param++) { | ||||
|       $list = $params[$param]; | ||||
|       $type = $params[$param]; | ||||
|       $type =~ s/\(.*//; | ||||
|       $list =~ s/^.*\(//; | ||||
|       $list =~ s/\)$//; | ||||
|       $count = (@fields = split(/,/, $list, 9999)); | ||||
|       for ($field = 1; $field <= $count; $field++) { | ||||
| 	my $c_type = $typeinfo->{$type}->[1]; | ||||
|  | ||||
| 	if ($first_param_name eq '') { | ||||
| 	  $first_param_name = $fields[$field]; | ||||
| 	} | ||||
|  | ||||
| 	if ($typeinfo->{$type}->[2]) { | ||||
| 	  $need_temp_storage = 1; | ||||
| 	} | ||||
|  | ||||
| 	if ($param_decl eq '') { | ||||
| 	  $param_decl = ",\n             " . $space . '    '; | ||||
| 	} | ||||
| 	else { | ||||
| 	  $param_decl = $param_decl . ', '; | ||||
| 	} | ||||
| 	$param_decl = $param_decl . $c_type . ' ' . $fields[$field]; | ||||
| 	$call_param = $call_param . ', ' . $fields[$field]; | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     if ($line_fields[3] eq '') { | ||||
|       $total_code = sprintf | ||||
| 	("\treturn glibtop_get_%s_s (server%s);\n", $feature, $call_param); | ||||
|     } elsif ($line_fields[3] eq 'array') { | ||||
|       $total_code = sprintf | ||||
| 	("\treturn glibtop_get_%s_s (server, array%s);\n", $feature, $call_param); | ||||
|     } elsif ($line_fields[3] =~ /^array/) { | ||||
|       $total_code = sprintf | ||||
| 	("\treturn glibtop_get_%s_s (server, array, buf%s);\n", $feature, $call_param); | ||||
|     } else { | ||||
|       $total_code = sprintf | ||||
| 	("\treturn glibtop_get_%s_s (server, buf%s);\n", $feature, $call_param); | ||||
|     } | ||||
|  | ||||
|     $func_decl = 'static '.$retval."\n"; | ||||
|     if ($line_fields[3] eq '') { | ||||
|       $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure%s)\n", | ||||
| 			     $feature, $param_decl); | ||||
|     } elsif ($line_fields[3] eq 'array') { | ||||
|       $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array%s)\n", | ||||
| 			     $feature, $param_decl); | ||||
|     } elsif ($line_fields[3] =~ /^array/) { | ||||
|       $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, glibtop_array *array, %s *buf%s)\n", | ||||
| 			     $feature, 'glibtop_'.$feature, $param_decl); | ||||
|     } else { | ||||
|       $func_decl .= sprintf ("_glibtop_get_%s_c (glibtop_server *server, void *closure, %s *buf%s)\n", | ||||
| 			     $feature, 'glibtop_'.$feature, $param_decl); | ||||
|     } | ||||
|  | ||||
|     $total_code = sprintf ("%s{\n%s\n%s}\n", $func_decl, $total_code); | ||||
|  | ||||
|     $total_code = sprintf ("#if (!GLIBTOP_SUID_%s)\n\n%s\n#endif /* not GLIBTOP_SUID_%s */\n\n", | ||||
| 			   &toupper($feature), $total_code, | ||||
| 			   &toupper($feature)); | ||||
|  | ||||
|     print $total_code; | ||||
| } | ||||
|  | ||||
| $init_hook_code = ''; | ||||
| $call_vector_code = ''; | ||||
| for ($nr = 1; $nr <= $feature_count; $nr++) { | ||||
|   $feature = $features{$nr}; | ||||
|  | ||||
|   if ($feature =~ /^@/) { | ||||
|     $call_vector_code .= sprintf (qq[\tNULL,\n]); | ||||
|   } else { | ||||
|     $call_vector_code .= sprintf | ||||
|       (qq[\#if GLIBTOP_SUID_%s\n\tNULL,\n\#else\n\t_glibtop_get_%s_c,\n\#endif\n], | ||||
|        &toupper($feature), $feature); | ||||
|   } | ||||
|  | ||||
|   if (!($feature =~ /^@/)) { | ||||
|     $init_hook_code .= sprintf | ||||
|       (qq[\#if !GLIBTOP_SUID_%s\n\tglibtop_init_%s_s,\n\#endif\n], | ||||
|        &toupper($feature), $feature); | ||||
|   } | ||||
| } | ||||
| $init_hook_code .= sprintf (qq[\tNULL\n]); | ||||
|  | ||||
| chop $init_hook_code; | ||||
| chop $call_vector_code; | ||||
|  | ||||
| print 'glibtop_call_vector glibtop_backend_sysdeps_call_vector = {'; | ||||
| print $call_vector_code; | ||||
| print '};'; | ||||
| print ''; | ||||
|  | ||||
| print 'glibtop_init_func_t _glibtop_init_hook_s [] = {'; | ||||
| print $init_hook_code; | ||||
| print '};'; | ||||
| print ''; | ||||
|  | ||||
							
								
								
									
										224
									
								
								configure.in
									
									
									
									
									
								
							
							
						
						
									
										224
									
								
								configure.in
									
									
									
									
									
								
							| @@ -5,19 +5,32 @@ dnl | ||||
| AC_INIT(copyright.txt) | ||||
| AM_CONFIG_HEADER(config.h) | ||||
| AC_CANONICAL_SYSTEM | ||||
| # Making releases: | ||||
| #   LIBGTOP_MICRO_VERSION += 1; | ||||
| #   LIBGTOP_INTERFACE_AGE += 1; | ||||
| #   LIBGTOP_BINARY_AGE += 1; | ||||
| # if any functions have been added, set LIBGTOP_INTERFACE_AGE to 0. | ||||
| # if backwards compatibility has been broken, | ||||
| # set LIBGTOP_BINARY_AGE and LIBGTOP_INTERFACE_AGE to 0. | ||||
| # | ||||
|  | ||||
| dnl This is required at several places | ||||
| AC_CHECK_PROG(ac_dc_found, dc, yes, no) | ||||
| if test x$ac_dc_found != xyes ; then | ||||
| AC_MSG_ERROR([ | ||||
| *** The "dc" utility was not found on your system. | ||||
| *** | ||||
| *** When using RedHat Linux, you need to install the "bc" package. | ||||
| ***]) | ||||
| fi | ||||
| LIBGTOP_MAJOR_VERSION=2 | ||||
| LIBGTOP_MINOR_VERSION=0 | ||||
| LIBGTOP_MICRO_VERSION=7 | ||||
| LIBGTOP_VERSION=$LIBGTOP_MAJOR_VERSION.$LIBGTOP_MINOR_VERSION.$LIBGTOP_MICRO_VERSION | ||||
| AM_INIT_AUTOMAKE(libgtop, $LIBGTOP_VERSION) | ||||
| LIBGTOP_INTERFACE_AGE=7 | ||||
| LIBGTOP_BINARY_AGE=7 | ||||
|  | ||||
| . $srcdir/LIBGTOP-VERSION | ||||
| AM_INIT_AUTOMAKE($PACKAGE, $VERSION) | ||||
| # you can set this to `-snap' for instance to create | ||||
| # a `libgtop-1.x.y-snap.tar.gz' tarball. | ||||
| LIBGTOP_VERSION_SUFFIX= | ||||
|  | ||||
| # Increase each time you change the client/server protocol. | ||||
| LIBGTOP_SERVER_VERSION=5 | ||||
|  | ||||
| # Version code calculation | ||||
| LIBGTOP_VERSION_CODE=`expr $LIBGTOP_MAJOR_VERSION \* 1000000 + $LIBGTOP_MINOR_VERSION \* 1000 + $LIBGTOP_MICRO_VERSION` | ||||
|  | ||||
| AC_SUBST(LIBGTOP_MAJOR_VERSION) | ||||
| AC_SUBST(LIBGTOP_MINOR_VERSION) | ||||
| @@ -27,6 +40,7 @@ AC_SUBST(LIBGTOP_BINARY_AGE) | ||||
| AC_SUBST(LIBGTOP_SERVER_VERSION) | ||||
| AC_SUBST(LIBGTOP_VERSION) | ||||
| AC_SUBST(LIBGTOP_VERSION_CODE) | ||||
| AC_SUBST(LIBGTOP_VERSION_SUFFIX) | ||||
|  | ||||
| # libtool versioning | ||||
| LT_RELEASE=$LIBGTOP_MAJOR_VERSION.$LIBGTOP_MINOR_VERSION | ||||
| @@ -40,12 +54,16 @@ AC_SUBST(LT_CURRENT) | ||||
| AC_SUBST(LT_REVISION) | ||||
| AC_SUBST(LT_AGE) | ||||
|  | ||||
| AM_ACLOCAL_INCLUDE(. macros) | ||||
| ACLOCAL_FLAGS="$ACLOCAL_FLAGS -I ." | ||||
|  | ||||
| AC_ISC_POSIX | ||||
| AC_PROG_CC | ||||
| AC_STDC_HEADERS | ||||
| AC_ARG_PROGRAM | ||||
| dnl AC_ARG_PROGRAM | ||||
|  | ||||
| dnl We need this at some places. | ||||
| libgtop_top_builddir=`pwd` | ||||
| AC_SUBST(libgtop_top_builddir) | ||||
|  | ||||
| dnl We don't use `AC_PROG_AWK' since it checks for mawk first which | ||||
| dnl does not work for libgtop. | ||||
| @@ -60,10 +78,8 @@ AC_CHECK_TOOL(CC,gcc) | ||||
| AC_CHECK_TOOL(RANLIB,ranlib) | ||||
| AC_CHECK_TOOL(AS,as) | ||||
| AC_CHECK_TOOL(AR,ar) | ||||
| AC_CHECK_TOOL(NM,nm) | ||||
|  | ||||
| NM=`which $NM` | ||||
| export CC CXX RANLIB LD AS AR NM | ||||
| export CC CXX RANLIB LD AS AR | ||||
|  | ||||
| AC_PROG_INSTALL | ||||
| AC_PROG_LN_S | ||||
| @@ -74,37 +90,44 @@ export cross_compiling | ||||
| AM_PROG_LIBTOOL | ||||
|  | ||||
| dnl Let the user enable compiler warnings | ||||
| GNOME_COMPILE_WARNINGS | ||||
| dnl GNOME_COMPILE_WARNINGS | ||||
|  | ||||
| GNOME_INIT_HOOK(gnome_found=yes) | ||||
| dnl GNOME_INIT_HOOK(gnome_found=yes) | ||||
|  | ||||
| if test "x$gnome_found" != xyes; then | ||||
|   if test "x$want_gnome" != xno ; then | ||||
|     AC_MSG_ERROR([ | ||||
| *** GNOME was not found on this system. *** | ||||
| dnl if test "x$gnome_found" != xyes; then | ||||
| dnl   if test "x$want_gnome" != xno ; then | ||||
| dnl     AC_MSG_ERROR([ | ||||
| dnl *** GNOME was not found on this system. *** | ||||
| dnl  | ||||
| dnl *** If you want to use LibGTop without GNOME, you need | ||||
| dnl *** to give configure the --without-gnome parameter. | ||||
| dnl ]) | ||||
| dnl   else | ||||
| dnl     AC_DEFINE(WITHOUT_GNOME) | ||||
| dnl   fi | ||||
| dnl   GNOME_SUPPORT_CHECKS | ||||
| dnl else | ||||
| dnl   if test "x$want_gnome" != xno ; then | ||||
| dnl     AM_CONDITIONAL(BUILD_GNOME_SUPPORT, false) | ||||
| dnl   else | ||||
| dnl     GNOME_SUPPORT_CHECKS | ||||
| dnl   fi | ||||
| dnl fi | ||||
|  | ||||
| *** If you want to use LibGTop without GNOME, you need | ||||
| *** to give configure the --without-gnome parameter. | ||||
| ]) | ||||
|   else | ||||
|     AC_DEFINE(WITHOUT_GNOME) | ||||
|   fi | ||||
|   GNOME_SUPPORT_CHECKS | ||||
| else | ||||
|   AM_CONDITIONAL(BUILD_GNOME_SUPPORT, false) | ||||
|   AM_CONDITIONAL(CROSS_COMPILING, test "x$cross_compiling" = xyes) | ||||
| fi | ||||
| AM_CONDITIONAL(BUILD_GNOME_SUPPORT, false) | ||||
|  | ||||
| AM_CONDITIONAL(CROSS_COMPILING, test "x$cross_compiling" = xyes) | ||||
|  | ||||
| GNOME_LIBGTOP_SYSDEPS | ||||
| GNOME_LIBGTOP_TYPES | ||||
|  | ||||
| AC_ARG_WITH(libgtop-guile, | ||||
| [  --with-libgtop-guile    Build the libgtop guile interface (default=no)], | ||||
| [build_guile="$withval"], [build_guile=yes]) | ||||
| dnl AC_ARG_WITH(libgtop-guile, | ||||
| dnl [  --with-libgtop-guile    Build the libgtop guile interface (default=no)], | ||||
| dnl [build_guile="$withval"], [build_guile=yes]) | ||||
|  | ||||
| if test x$build_guile != xno ; then | ||||
|   GNOME_CHECK_GUILE | ||||
| fi | ||||
| dnl if test x$build_guile != xno ; then | ||||
| dnl  GNOME_CHECK_GUILE | ||||
| dnl fi | ||||
|  | ||||
| AC_ARG_WITH(libgtop-inodedb, | ||||
| [  --with-libgtop-inodedb  Build the inodedb stuff (default=no)], | ||||
| @@ -147,11 +170,14 @@ else | ||||
| fi | ||||
|  | ||||
| if test "x$enable_static" != xno; then | ||||
|   static_targets="first_static second_static mountlist_static procmap_static netload_static sysdeps_static $guile_static_examples $smp_static_examples" | ||||
|   static_targets="first_static second_static mountlist_static procmap_static netload_static sysdeps_static timings_static $guile_static_examples $smp_static_examples" | ||||
| else | ||||
|   static_targets="" | ||||
| fi | ||||
|  | ||||
| AM_CONDITIONAL(ENABLE_STATIC, test x$enable_static = xyes) | ||||
| AM_CONDITIONAL(ENABLE_SHARED, test x$enable_static = xyes) | ||||
|  | ||||
| AC_SUBST(static_targets) | ||||
| AC_SUBST(smp_examples) | ||||
| AC_SUBST(guile_examples) | ||||
| @@ -159,11 +185,17 @@ AC_SUBST(guile_subdirs) | ||||
|  | ||||
| AM_PROG_LIBTOOL | ||||
|  | ||||
| AM_PATH_GLIB(1.2.0,,AC_MSG_ERROR(GLIB >= 1.2.0 is required for LibGTop)) | ||||
| GLIB_REQUIRED=2.0.0 | ||||
|  | ||||
| PKG_CHECK_MODULES(GLIB, glib-2.0 >= $GLIB_REQUIRED) | ||||
| AC_SUBST(GLIB_CFLAGS) | ||||
| AC_SUBST(GLIB_LIBS) | ||||
|  | ||||
| dnl (1.2.0,,AC_MSG_ERROR(GLIB >= 1.2.0 is required for LibGTop)) | ||||
|  | ||||
| dnl You need to uncomment the following line if you want to use | ||||
| dnl libGTop without Gnome. | ||||
| dnl GNOME_SUPPORT_CHECKS | ||||
| GNOME_SUPPORT_CHECKS | ||||
|  | ||||
| dnl Checks for typedefs, structures, and compiler characteristics. | ||||
| AC_C_CONST | ||||
| @@ -181,23 +213,65 @@ AC_CHECK_TYPE(ssize_t, int) | ||||
| AC_CHECK_HEADERS(memory.h) | ||||
| AC_CHECK_HEADERS(string.h strings.h, break) | ||||
| AC_REPLACE_FUNCS(strerror) | ||||
| AC_CHECK_LIB(kvm, kvm_open) | ||||
|  | ||||
| dnl dlopen() and dlsym() | ||||
| DL_LIB= | ||||
| AC_CHECK_FUNCS(dlopen,,[ | ||||
|   AC_CHECK_LIB(dl, dlopen, DL_LIB="-ldl", [ | ||||
|     AC_CHECK_LIB(dld, shl_load, DL_LIB="-ldld", [ | ||||
|       AC_CHECK_FUNCS(dlopen, DL_LIB="", DL_LIB="") | ||||
|     ]) | ||||
|   ]) | ||||
| ]) | ||||
| oLIBS="$LIBS" | ||||
| LIBS="$LIBS $DL_LIB" | ||||
| AC_CHECK_FUNCS(dlerror,,) | ||||
| LIBS="$oLIBS" | ||||
| AC_SUBST(DL_LIB) | ||||
|  | ||||
| dnl AIX | ||||
| AH_TEMPLATE(HAVE_VMGETINFO, [Define to 1 if you have the `vmgetinfo' function in libperfstat]) | ||||
| AC_CHECK_LIB(perfstat, vmgetinfo, AC_DEFINE(HAVE_VMGETINFO)) | ||||
|  | ||||
| dnl Solaris | ||||
| AC_CHECK_LIB(kstat, kstat_open) | ||||
| AC_CHECK_FUNCS(getloadavg swapctl) | ||||
| AC_CHECK_HEADERS(procfs.h sys/procfs.h, break) | ||||
|  | ||||
| dnl Some versions of Solaris require -lelf for -lkvm | ||||
| AC_CHECK_LIB(kvm, kvm_open,[ | ||||
|   LIBS="-lkvm $LIBS" | ||||
| ],[AC_MSG_CHECKING(for kvm_open in -lkvm with -lelf) | ||||
|    AC_CACHE_VAL(ac_cv_lib_kvm_with_elf, | ||||
|    [ac_save_LIBS="$LIBS" | ||||
|     LIBS="-lkvm -lelf $LIBS" | ||||
|     AC_TRY_LINK([char kvm_open();], [kvm_open()], | ||||
|                 ac_cv_lib_kvm_with_elf=yes, ac_cv_lib_kvm_with_elf=no) | ||||
|     LIBS="$ac_save_LIBS" | ||||
|    ]) | ||||
|    if test "$ac_cv_lib_kvm_with_elf" = "yes"; then | ||||
|      AC_MSG_RESULT(yes) | ||||
|      LIBS="-lkvm -lelf $LIBS" | ||||
|    else | ||||
|      AC_MSG_RESULT(no) | ||||
|    fi | ||||
| ]) | ||||
|  | ||||
| dnl For DEC OSF1 | ||||
| AC_CHECK_LIB(mach, vm_statistics) | ||||
|  | ||||
| dnl For some broken libc5 systems (Debian 1.3)                                                            | ||||
| saved_CFLAGS=$CFLAGS                                                                                      | ||||
| CFLAGS="$CFLAGS -D_GNU_SOURCE"                                                                            | ||||
| dnl For some broken libc5 systems (Debian 1.3) | ||||
| saved_CFLAGS=$CFLAGS | ||||
| CFLAGS="$CFLAGS -D_GNU_SOURCE" | ||||
| GCC_NEED_DECLARATION(program_invocation_name, [                            | ||||
| #include <errno.h>                                                                                        | ||||
| #include <stdio.h>                                                                                        | ||||
| #include <stdlib.h>                                                                                       | ||||
| #include <string.h>                                                                                       | ||||
| ])                                                                                                        | ||||
| CFLAGS=$saved_CFLAGS                                                                                      | ||||
|                                                                                                           | ||||
| dnl Check for Internet sockets. | ||||
| #include <errno.h> | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
| ]) | ||||
|  | ||||
| CFLAGS=$saved_CFLAGS | ||||
|  | ||||
| AC_CHECK_FUNC(socket, | ||||
|  [AC_CHECK_HEADER(netinet/in.h, | ||||
|    [AC_CHECK_HEADER(arpa/inet.h, [ | ||||
| @@ -219,9 +293,13 @@ AC_TYPE_SIGNAL | ||||
| AC_FUNC_STRFTIME | ||||
| AC_CHECK_FUNCS(getcwd gettimeofday getwd putenv strdup strtoul uname) | ||||
|  | ||||
| dnl ## all 'es_??' are only needed for format numbers different of 'es' | ||||
| ALL_LINGUAS="de es es_DO es_GT es_HN es_MX es_PA es_PE es_SV fr ko no ja" | ||||
| AM_GNOME_GETTEXT | ||||
| ALL_LINGUAS="am ar az be bg bn ca cs cy da de el es et fa fi fr ga gl he hi hu id it ja ko lv mk ml mn ms nl nn no pl pt pt_BR ro ru sk sl sq sr sr@Latn sv ta tr uk vi zh_CN zh_TW" | ||||
|  | ||||
| GETTEXT_PACKAGE=libgtop-2.0 | ||||
| AC_SUBST(GETTEXT_PACKAGE) | ||||
| AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE") | ||||
|  | ||||
| AM_GLIB_GNU_GETTEXT | ||||
|  | ||||
| AC_PATH_XTRA | ||||
|  | ||||
| @@ -265,7 +343,7 @@ if test "x$gnome_found" = xyes ; then | ||||
|   LIBSUPPORT="$GNOME_LIBDIR -lgnomesupport" | ||||
|   SUPPORTINCS="$GNOME_INCLUDEDIR" | ||||
| else | ||||
|   LIBSUPPORT='$(top_builddir)/support/libgnomesupport.la' | ||||
|   LIBSUPPORT='$(top_builddir)/support/libgnomesupport-2.0.la' | ||||
|   SUPPORTINCS='-DNEED_GNOMESUPPORT_H -I$(top_builddir)/support -I$(top_srcdir)/support' | ||||
| fi | ||||
|  | ||||
| @@ -281,7 +359,7 @@ AC_SUBST(SUPPORTINCS) | ||||
|  | ||||
| dnl These definitions are expanded in make. | ||||
| LIBGTOP_LIBS='-L$(libdir)' | ||||
| LIBGTOP_INCS='-I$(includedir)' | ||||
| LIBGTOP_INCS='-I$(includedir)/libgtop-2.0' | ||||
|  | ||||
| if test x$libgtop_use_machine_h = xyes ; then | ||||
|   LIBGTOP_INCS="$LIBGTOP_INCS -DHAVE_GLIBTOP_MACHINE_H" | ||||
| @@ -304,13 +382,13 @@ LIBGTOP_INCS="$LIBGTOP_INCS $SUPPORTINCS $GLIB_CFLAGS" | ||||
| LIBGTOP_GUILE_LIBS="$LIBGTOP_LIBS" | ||||
| LIBGTOP_GUILE_INCS="$LIBGTOP_INCS" | ||||
| LIBGTOP_BINDIR='$(bindir)' | ||||
| LIBGTOP_SERVER='$(bindir)/libgtop_server' | ||||
| LIBGTOP_SERVER='$(bindir)/libgtop_server2' | ||||
|  | ||||
| sysdeps_dir="$libgtop_sysdeps_dir" | ||||
| AC_SUBST(sysdeps_dir) | ||||
|  | ||||
| if test x$ac_cv_guile_found = xyes ; then | ||||
|   LIBGTOP_GUILE_LIBS="$LIBGTOP_GUILE_LIBS -lgtop_guile" | ||||
|   LIBGTOP_GUILE_LIBS="$LIBGTOP_GUILE_LIBS -lgtop_guile-2.0" | ||||
|   libgtop_guile_found=yes | ||||
| else | ||||
|   libgtop_guile_found=no | ||||
| @@ -326,11 +404,11 @@ fi | ||||
|  | ||||
| LIBGTOP_EXTRA_LIBS="$LIBGTOP_EXTRA_LIBS $GLIB_LIBS" | ||||
|  | ||||
| LIBGTOP_LIBS="$LIBGTOP_LIBS -lgtop -lgtop_sysdeps -lgtop_common" | ||||
| LIBGTOP_GUILE_LIBS="$LIBGTOP_GUILE_LIBS -lgtop -lgtop_sysdeps -lgtop_common" | ||||
| LIBGTOP_LIBS="$LIBGTOP_LIBS -lgtop-2.0 -lgtop_sysdeps-2.0 -lgtop_common-2.0" | ||||
| LIBGTOP_GUILE_LIBS="$LIBGTOP_GUILE_LIBS -lgtop-2.0 -lgtop_sysdeps-2.0 -lgtop_common-2.0" | ||||
|  | ||||
| LIBGTOP_NAMES_LIBS="$LIBGTOP_LIBS -lgtop_names" | ||||
| LIBGTOP_GUILE_NAMES_LIBS="$LIBGTOP_GUILE_LIBS -lgtop_guile_names -lgtop_names" | ||||
| LIBGTOP_NAMES_LIBS="$LIBGTOP_LIBS -lgtop_names-2.0" | ||||
| LIBGTOP_GUILE_NAMES_LIBS="$LIBGTOP_GUILE_LIBS -lgtop_guile_names-2.0 -lgtop_names-2.0" | ||||
|  | ||||
| LIBGTOP_LIBS="$LIBGTOP_LIBS"  | ||||
| LIBGTOP_NAMES_LIBS="$LIBGTOP_NAMES_LIBS" | ||||
| @@ -354,12 +432,12 @@ else | ||||
|   guile_def="" | ||||
| fi | ||||
|  | ||||
| INCLUDES="-D_IN_LIBGTOP -D_GNU_SOURCE -DGLIBTOP_NAMES -I\$(top_builddir) -I\$(top_srcdir) -I\$(top_srcdir)/sysdeps/$sysdeps_dir -I\$(top_srcdir)/include -I\$(top_srcdir)/intl $SUPPORTINCS $GLIB_CFLAGS $CFLAGS $X_CFLAGS $guile_def "'-DGTOPLOCALEDIR=\"$(datadir)/locale\" -DLIBGTOP_VERSION=\"'"$LIBGTOP_VERSION"'\" -DLIBGTOP_SERVER_VERSION=\"'"$LIBGTOP_SERVER_VERSION"'\" -DLIBGTOP_SERVER=\"'"$LIBGTOP_SERVER"'\"' | ||||
| INCLUDES="-D_IN_LIBGTOP -D_GNU_SOURCE -DGLIBTOP_NAMES -I\$(top_builddir) -I\$(top_srcdir) -I\$(top_srcdir)/sysdeps/$sysdeps_dir -I\$(top_srcdir)/include $SUPPORTINCS $GLIB_CFLAGS $CFLAGS $X_CFLAGS $guile_def "'-DGTOPLOCALEDIR=\"$(datadir)/locale\" -DLIBGTOP_VERSION=\"'"$LIBGTOP_VERSION"'\" -DLIBGTOP_SERVER_VERSION=\"'"$LIBGTOP_SERVER_VERSION"'\" -DLIBGTOP_VERSION_CODE='$LIBGTOP_VERSION_CODE' -DLIBGTOP_SERVER=\"'"$LIBGTOP_SERVER"'\"' | ||||
|  | ||||
| AC_SUBST(INCLUDES) | ||||
|  | ||||
| AC_SUBST(LIBGTOP_EXTRA_LIBS) | ||||
|  | ||||
| AC_SUBST(GLIB_LIBS) | ||||
| AC_SUBST(LIBGTOP_LIBS) | ||||
| AC_SUBST(LIBGTOP_INCS) | ||||
| AC_SUBST(LIBGTOP_NAMES_LIBS) | ||||
| @@ -372,8 +450,8 @@ AC_SUBST(LIBGTOP_BINDIR) | ||||
| AC_SUBST(LIBGTOP_SERVER) | ||||
|  | ||||
| if test x$libgtop_need_server = xyes ; then | ||||
|    sysdeps_suid_lib="\$(top_builddir)/sysdeps/\$(sysdeps_dir)/libgtop_sysdeps_suid.la" | ||||
|    server_programs='libgtop_server' | ||||
|    sysdeps_suid_lib="\$(top_builddir)/sysdeps/\$(sysdeps_dir)/libgtop_sysdeps_suid-2.0.la" | ||||
|    server_programs='libgtop_server2' | ||||
| else | ||||
|    sysdeps_suid_lib= | ||||
|    server_programs= | ||||
| @@ -385,7 +463,6 @@ AC_OUTPUT([ | ||||
| Makefile | ||||
| libgtop.spec | ||||
| po/Makefile.in | ||||
| intl/Makefile | ||||
| misc/Makefile | ||||
| include/Makefile | ||||
| include/glibtop/Makefile | ||||
| @@ -401,10 +478,15 @@ sysdeps/osf1/Makefile | ||||
| sysdeps/linux/Makefile | ||||
| sysdeps/kernel/Makefile | ||||
| sysdeps/freebsd/Makefile | ||||
| sysdeps/solaris/Makefile | ||||
| sysdeps/aix/Makefile | ||||
| src/Makefile | ||||
| src/daemon/Makefile | ||||
| src/inodedb/Makefile | ||||
| lib/Makefile | ||||
| examples/Makefile | ||||
| doc/Makefile | ||||
| support/Makefile | ||||
| macros/Makefile]) | ||||
| support/gnome-support-2.0.pc | ||||
| libgtop-2.0.pc | ||||
| ]) | ||||
|   | ||||
							
								
								
									
										9
									
								
								debian/.cvsignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								debian/.cvsignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | ||||
| control | ||||
| rules | ||||
| build | ||||
| tmp | ||||
| *.postinst | ||||
| *.debhelper | ||||
| *.files | ||||
| files | ||||
| substvars | ||||
							
								
								
									
										9
									
								
								debian/README.Debian
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								debian/README.Debian
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | ||||
| LibGTop CVS snapshots for Debian | ||||
| -------------------------------- | ||||
|  | ||||
| This is a debian package made from a stable release of LibGTop, but it | ||||
| should be considered "unofficial" since I'm not a Debian Maintainer. | ||||
|  | ||||
|  | ||||
| Martin Baulig <martin@home-of-linux.org>, Wed, 16 Feb 2000 16:40:50 +0100 | ||||
|  | ||||
							
								
								
									
										121
									
								
								debian/changelog
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										121
									
								
								debian/changelog
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,121 @@ | ||||
| libgtop (1.0.7-1) unstable; urgency=low | ||||
|   * New upstream source (1.0.7 "Copenhagen" release) | ||||
|   * Non-maintainer upload; since I'm not a Debian maintainer, this is some | ||||
|     kind of "unofficial" debian package for LibGTop 1.0.7 - but I think it | ||||
|     can be considered stable and working. | ||||
|  | ||||
|  -- Martin Baulig <martin@home-of-linux.org>  Wed, 16 Feb 2000 16:40:50 +0100 | ||||
|  | ||||
| libgtop (1.0.6-1) unstable; urgency=low | ||||
|   * New upstream source | ||||
|  | ||||
|  -- Ian Lynagh (wibble) <igloo@debian.org>  Wed, 20 Oct 1999 16:16:27 +0100 | ||||
|  | ||||
| libgtop (1.0.4.5pre1-1) frozen unstable; urgency=low | ||||
|   * New upstream source (1.0.5 pre release) | ||||
|   * Maintainer e-mail address changed to igloo@debian.org | ||||
|  | ||||
|  -- Ian Lynagh (wibble) <igloo@debian.org>  Thu, 30 Sep 1999 22:37:33 +0100 | ||||
|  | ||||
| libgtop (1.0.4-1) frozen unstable; urgency=low | ||||
|   * New upstream source | ||||
|   * Removed nasty sed stuff from the rules in favour of make install prefix=... | ||||
|   * Added .la files to libgtop-dev | ||||
|   * Added info to the copyright file | ||||
|   * Wrote simple man page for libgtop-config. | ||||
|   * Recompiled with later debhelper so docs go to /usr/share/doc as per FHS | ||||
|   * changed infodir to /usr/share/info | ||||
|  | ||||
|  -- Ian Lynagh (wibble) <igloo@debian.org>  Mon, 20 Sep 1999 00:06:16 +0100 | ||||
|  | ||||
| libgtop (1.0.1-2) frozen unstable; urgency=low | ||||
|  | ||||
|   * Didn't actually use wildcards in libgtop-dev.files because tar complained | ||||
|   * Set section names properly | ||||
|  | ||||
|  -- Ian Lynagh <ian@lynagh.demon.co.uk>  Sun,  7 Mar 1999 00:53:50 +0000 | ||||
|  | ||||
| libgtop (1.0.1-1) frozen unstable; urgency=low | ||||
|  | ||||
|   * SONAME changed back to 1. Fun fun fun. | ||||
|   * Added RELNOTES-1.0 to debian/libgtop1.docs and debian/rules | ||||
|   * Changed libgtop1.README.Debian to at least make sense | ||||
|   * Used wildcards in libgtop-dev.files | ||||
|  | ||||
|  -- Ian Lynagh <ian@lynagh.demon.co.uk>  Sun,  7 Mar 1999 00:53:50 +0000 | ||||
|  | ||||
| libgtop (1.0.1-0.1) unstable; urgency=low | ||||
|  | ||||
|   * Non-maintainer upload for GNOME 1.0 | ||||
|  | ||||
|  -- Jules Bean <jules@debian.org>  Thu,  4 Mar 1999 22:34:12 +0000 | ||||
|  | ||||
| libgtop (0.99.2-0.2) unstable; urgency=low | ||||
|  | ||||
|   * Oops, forgot some files. | ||||
|  | ||||
|  -- Jim Pick <jim@jimpick.com>  Sun, 24 Jan 1999 02:12:24 -0800 | ||||
|  | ||||
| libgtop (0.99.2-0.1) unstable; urgency=low | ||||
|  | ||||
|   * Non-maintainer upload. | ||||
|   * New upstream source. | ||||
|   * SONAME is now 0 again.  Hmmm. | ||||
|  | ||||
|  -- Jim Pick <jim@jimpick.com>  Sat, 23 Jan 1999 20:21:38 -0800 | ||||
|  | ||||
| libgtop (0.26.2-4) frozen unstable; urgency=low | ||||
|  | ||||
|   * Upstream changelog installed as changelog | ||||
|   * debian/shlibs.local removed in favour of the LD_LIBRARY_PATH line | ||||
|  | ||||
|  -- Ian Lynagh <ian@lynagh.demon.co.uk>  Thu, 26 Nov 1998 17:20:24 +0000 | ||||
|  | ||||
| libgtop (0.26.2-3.1) frozen unstable; urgency=low | ||||
|  | ||||
|   * Non-maintainer upload. | ||||
|   * Upload to frozen, corrects Bug #29110, Bug #29111, which were | ||||
|     already fixed. | ||||
|   * Noticed that guile option is no longer being used, so I removed | ||||
|     the dependency. | ||||
|   * Added changelog (to fix lintian error). | ||||
|   * Changed control file to use macro substitutions.  This is a much | ||||
|     less error-prone way of building dependencies than doing them by | ||||
|     hand. | ||||
|   * Added -V option to dh_makeshlibs to put version number on shlibs | ||||
|     file. | ||||
|   * Added shlibs.local file with null entry for "libgtop 1" (and | ||||
|     others) so libgtop1 doesn't declare a relationship on itself. | ||||
|  | ||||
|  -- Jim Pick <jim@jimpick.com>  Wed, 25 Nov 1998 12:03:12 -0800 | ||||
|  | ||||
| libgtop (0.26.2-3) frozen unstable; urgency=low | ||||
|  | ||||
|   * libgtop0 changed to libgtop1 | ||||
|   * Added an #ifndef strstr around the prototype of strstr in | ||||
|     sysdeps/common/mountlist.c as this is a macro under glibc 2.1. | ||||
|  | ||||
|  -- Ian Lynagh <ian@lynagh.demon.co.uk>  Sun,  8 Nov 1998 12:06:09 +0000 | ||||
|  | ||||
| libgtop (0.26.2-2) frozen unstable; urgency=low | ||||
|  | ||||
|   * Fixes minor bugs in debian/rules | ||||
|  | ||||
|  -- Ian Lynagh <ian@lynagh.demon.co.uk>  Fri, 16 Oct 1998 05:30:16 +0200 | ||||
|  | ||||
| libgtop (0.26.2-1) unstable; urgency=low | ||||
|  | ||||
|   * New upstream version | ||||
|   * Non-maintainer release | ||||
|  | ||||
|  -- Martin Schulze <joey@finlandia.infodrom.north.de>  Fri, 16 Oct 1998 05:30:16 +0200 | ||||
|  | ||||
| libgtop (0.26.0-1) unstable; urgency=low | ||||
|  | ||||
|   * Initial Release. | ||||
|  | ||||
|  -- Jim Pick <jim@jimpick.com>  Thu, 24 Sep 1998 18:42:48 -0700 | ||||
|  | ||||
| Local variables: | ||||
| mode: debian-changelog | ||||
| End: | ||||
							
								
								
									
										33
									
								
								debian/control.in
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								debian/control.in
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,33 @@ | ||||
| Source: libgtop@SUFFIX@ | ||||
| Maintainer: Martin Baulig <martin@home-of-linux.org> | ||||
| Section: libs | ||||
| Priority: optional | ||||
| Standards-Version: 3.0.0 | ||||
|  | ||||
| Package: libgtop1@SUFFIX@ | ||||
| Architecture: any | ||||
| Section: libs | ||||
| Depends: ${shlibs:Depends} | ||||
| Description: Portable system access library (part of Gnome) | ||||
|  Gnome is the "GNU Network Object Model Environment" | ||||
|  . | ||||
|  It is a project to build a complete, user-friendly desktop based | ||||
|  entirely on free software. | ||||
|  . | ||||
|  This package contains the gtop libraries which read information about | ||||
|  processes and the running systems. | ||||
|  | ||||
| Package: libgtop-dev@SUFFIX@ | ||||
| Architecture: any | ||||
| Section: devel | ||||
| Depends: libgtop1@SUFFIX@ (= ${Source-Version}) | ||||
| Description: Dev libraries for the portable system access library (part of Gnome) | ||||
|  Gnome is the "GNU Network Object Model Environment" | ||||
|  . | ||||
|  It is a project to build a complete, user-friendly desktop based | ||||
|  entirely on free software. | ||||
|  . | ||||
|  This package contains the include files and static library for the | ||||
|  gtop libraries which read information about processes and the running | ||||
|  systems. | ||||
|  | ||||
							
								
								
									
										109
									
								
								debian/debconfigure
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										109
									
								
								debian/debconfigure
									
									
									
									
										vendored
									
									
										Executable file
									
								
							| @@ -0,0 +1,109 @@ | ||||
| #! /bin/sh | ||||
| # | ||||
| # debconfigure | ||||
| # | ||||
| # A script to generate a debian/rules file, with options. | ||||
| # | ||||
| # By Jim Pick <jim@jimpick.com>, GPL'd of course. | ||||
| # Adjusted for LibGTop by Martin Baulig <martin@home-of-linux.org> | ||||
| # | ||||
|  | ||||
| if [ ! -r rules.in ]; then | ||||
| 	echo "Please run the debconfigure script in the debian directory" 1>&2 | ||||
| 	exit 1 | ||||
| fi | ||||
|  | ||||
| debtype='official' | ||||
| prefix='/usr' | ||||
| gnomeprefix='/usr' | ||||
| localstatedir='/var/lib' | ||||
| pkgsuffix='' | ||||
|  | ||||
| for dc_option | ||||
| do | ||||
|     case "$dc_option" in | ||||
| 	-*=*) dc_optarg=`echo "$dc_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; | ||||
| 	*) dc_optarg= ;; | ||||
|     esac | ||||
|  | ||||
|     case "$dc_option" in | ||||
|  | ||||
| 	--clean) | ||||
| 	    rm -f control rules *~ core *files *menu *substvars *.postinst *.debhelper | ||||
| 	    exit ;; | ||||
|  | ||||
| 	--prefix=*) | ||||
| 	    prefix="$dc_optarg" ;; | ||||
|  | ||||
|         --localstatedir=*) | ||||
| 	    prefix="$dc_optarg" ;; | ||||
|  | ||||
| 	--pkgsuffix=*) | ||||
| 	    pkgsuffix="$dc_optarg" ;; | ||||
|  | ||||
| 	--gnome-prefix=*) | ||||
| 	    gnomeprefix="$dc_optarg" ;; | ||||
|  | ||||
| 	--debtype=*) | ||||
| 	    debtype="$dc_optarg" ;; | ||||
|  | ||||
| 	*) | ||||
| 	    cat <<EOF 1>&2 | ||||
| Usage: debconfigure [options] | ||||
| Options: [defaults in brackets after descriptions] | ||||
|   --help                  print this message | ||||
|   --clean		  remove generated files | ||||
|   --prefix=PREFIX         install files under under PREFIX dir [/usr] | ||||
|   --gnome-prefix=PREFIX   look for GNOME under PREFIX dir [/usr] | ||||
|   --localstatedir=DIR     directory for things like game scores [/var/lib] | ||||
|   --pkgsuffix=SUFFIX      append SUFFIX onto package names [] | ||||
|   --debtype=DEBTYPE       enable macros with the name of DEBTYPE [official] | ||||
| EOF | ||||
| 	    exit ;; | ||||
|  | ||||
|     esac | ||||
| done | ||||
|  | ||||
| # Strip leading slash | ||||
| prefix=`expr $prefix : '/\(.*\)'` | ||||
| gnomeprefix=`expr $gnomeprefix : '/\(.*\)'` | ||||
| localstatedir=`expr $localstatedir : '/\(.*\)'` | ||||
|  | ||||
| for infile in `ls control.in rules.in` | ||||
| do | ||||
|     tofile=`expr $infile : '\(.*\)\.in'` | ||||
|     cat $infile | \ | ||||
|        sed "s,@SUFFIX@,$pkgsuffix,g" | \ | ||||
|        sed "s,@PREFIX@,$prefix,g" | \ | ||||
|        sed "s,@GNOMEPREFIX@,$gnomeprefix,g" | \ | ||||
|        sed "s,@LOCALSTATEDIR@,$localstatedir,g" | \ | ||||
|        sed "s,%$debtype>,," | sed '/^%/d' > $tofile | ||||
| done | ||||
| chmod +x rules | ||||
|  | ||||
| for filesfile in `ls *.files.in` | ||||
| do | ||||
|     tofile=`expr $filesfile : '\(.*\)\.files\.in'` | ||||
|     tofile=`echo $tofile$pkgsuffix.files` | ||||
|     cat $filesfile | \ | ||||
|        sed "s,@SUFFIX@,$pkgsuffix,g" | \ | ||||
|        sed "s,@PREFIX@,$prefix,g" | \ | ||||
|        sed "s,@GNOMEPREFIX@,$gnomeprefix,g" | \ | ||||
|        sed "s,@LOCALSTATEDIR@,$localstatedir,g" | \ | ||||
|        sed "s,%$debtype>,," | sed '/^%/d' > $tofile | ||||
| done | ||||
|  | ||||
| for postinst in libgtop1$pkgsuffix | ||||
| do | ||||
|  | ||||
| cat > $postinst.postinst <<EOF | ||||
| #! /bin/sh | ||||
|  | ||||
| set -e | ||||
| ldconfig | ||||
|  | ||||
| #DEBHELPER# | ||||
| EOF | ||||
|  | ||||
| done | ||||
|  | ||||
							
								
								
									
										34
									
								
								debian/libgtop-config.1
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								debian/libgtop-config.1
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,34 @@ | ||||
| .TH GTOP l "15 September 1999" | ||||
| .SH NAME | ||||
| \fBlibgtop-config\fP \- libgtop libraries and component information retrieval. | ||||
| .SH SYNTAX | ||||
| .B libgtop-config | ||||
| .RI [ --version ] | ||||
| .RI [ --config ] | ||||
| .RI [ --features-def-file ] | ||||
| .SH DESCRIPTION | ||||
| .B libgtop-config | ||||
| is used to retrieve information from installed libraries in the system. | ||||
|  | ||||
| This manual page was written for the Debian GNU/Linux distribution because the original program does not have a manual page. | ||||
| .LP | ||||
| .SH OPTIONS | ||||
| .TP | ||||
| .B \-\-version | ||||
| .PD | ||||
| Prints the version of libgtop that you're using. | ||||
| .TP | ||||
| .B \-\-config | ||||
| .PD | ||||
| Prints the location of libgtopConf.sh. | ||||
| .TP | ||||
| .B \-\-version | ||||
| .PD | ||||
| Prints the location of libgtop-features.def. | ||||
| .SH BUGS | ||||
| None known | ||||
|  | ||||
| .SH AUTHORS | ||||
| Martin Baulig (martin@home-of-linux.org) | ||||
| .TP | ||||
| Josh Sled (jsled@scam.XCF.Berkeley.EDU) | ||||
							
								
								
									
										24
									
								
								debian/libgtop-dev.files.in
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								debian/libgtop-dev.files.in
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | ||||
| @PREFIX@/lib/libgtop.a | ||||
| @PREFIX@/lib/libgtop_common.a | ||||
| @PREFIX@/lib/libgtop_names.a | ||||
| @PREFIX@/lib/libgtop_suid_common.a | ||||
| @PREFIX@/lib/libgtop_sysdeps.a | ||||
| @PREFIX@/lib/libgtop.la | ||||
| @PREFIX@/lib/libgtop_common.la | ||||
| @PREFIX@/lib/libgtop_names.la | ||||
| @PREFIX@/lib/libgtop_suid_common.la | ||||
| @PREFIX@/lib/libgtop_sysdeps.la | ||||
| @PREFIX@/lib/libgtopConf.sh | ||||
| @PREFIX@/lib/libgtop.so | ||||
| @PREFIX@/lib/libgtop_common.so | ||||
| @PREFIX@/lib/libgtop_names.so | ||||
| @PREFIX@/lib/libgtop_suid_common.so | ||||
| @PREFIX@/lib/libgtop_sysdeps.so | ||||
| @PREFIX@/lib/libgtop-features.def | ||||
| @PREFIX@/lib/libgtop/include/*.h | ||||
| @PREFIX@/include/glibtop/*.h | ||||
| @PREFIX@/include/glibtop.h | ||||
| @PREFIX@/include/glibtop_server.h | ||||
| @PREFIX@/include/glibtop_machine.h | ||||
| @PREFIX@/info/libgtop.info | ||||
| @PREFIX@/bin/libgtop-config | ||||
							
								
								
									
										5
									
								
								debian/libgtop1.README.Debian
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								debian/libgtop1.README.Debian
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
|  | ||||
| The Debian package of libgtop, a GNOME library. | ||||
|  | ||||
| --  | ||||
| Martin Baulig <martin@home-of-linux.org> | ||||
							
								
								
									
										12
									
								
								debian/libgtop1.copyright
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								debian/libgtop1.copyright
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | ||||
|  | ||||
| libgtop is released under the GPL. | ||||
| On Debian GNU/Linux systems, the complete text of the GNU General | ||||
| Public License can be found in /usr/share/common-licenses/GPL | ||||
|  | ||||
| Original authors: Martin Baulig <martin@home-of-linux.org> | ||||
|                   Drazen Kacar <dave@srce.hr> | ||||
|  | ||||
| Originally Debianised by Jim Pick <jim@jimpick.com> | ||||
| Then re-Debianised in October 1998 by Martin Schulze | ||||
| <joey@finlandia.infodrom.north.de> before being taken over by Ian Lynagh | ||||
| <ian@lynagh.demon.co.uk> in November 1998. | ||||
							
								
								
									
										5
									
								
								debian/libgtop1.docs
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								debian/libgtop1.docs
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| RELNOTES-0.25 | ||||
| RELNOTES-1.0.x | ||||
| NEWS | ||||
| AUTHORS | ||||
| debian/changelog | ||||
							
								
								
									
										4
									
								
								debian/libgtop1.files.in
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								debian/libgtop1.files.in
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | ||||
| @PREFIX@/lib/libgtop*.so.[0-9].[0-9][0-9].[0-9] | ||||
| @PREFIX@/lib/libgtop*.so.[0-9].[0-9].[0-9] | ||||
| @PREFIX@/lib/libgtop*.so.[0-9] | ||||
| @PREFIX@/share/locale/*/*/libgtop.mo | ||||
							
								
								
									
										5
									
								
								debian/libgtop2.README.Debian
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								debian/libgtop2.README.Debian
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
|  | ||||
| The Debian package of libgtop, a GNOME library. | ||||
|  | ||||
| --  | ||||
| Ian Lynagh <ian@lynagh.demon.co.uk> | ||||
							
								
								
									
										12
									
								
								debian/libgtop2.copyright
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								debian/libgtop2.copyright
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | ||||
|  | ||||
| libgtop is released under the GPL. | ||||
| On Debian GNU/Linux systems, the complete text of the GNU General | ||||
| Public License can be found in /usr/share/common-licenses/GPL | ||||
|  | ||||
| Original authors: Martin Baulig <martin@home-of-linux.org> | ||||
|                   Drazen Kacar <dave@srce.hr> | ||||
|  | ||||
| Originally Debianised by Jim Pick <jim@jimpick.com> | ||||
| Then re-Debianised in October 1998 by Martin Schulze | ||||
| <joey@finlandia.infodrom.north.de> before being taken over by Ian Lynagh | ||||
| <ian@lynagh.demon.co.uk> in November 1998. | ||||
							
								
								
									
										7
									
								
								debian/libgtop2.docs
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								debian/libgtop2.docs
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| RELNOTES-0.25 | ||||
| RELNOTES-1.0 | ||||
| RELNOTES-1.1.x | ||||
| NEWS | ||||
| AUTHORS | ||||
| TODO | ||||
| debian/changelog | ||||
							
								
								
									
										2
									
								
								debian/libgtop2.files.in
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								debian/libgtop2.files.in
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | ||||
| @PREFIX@/lib/libgtop*-1.1.so.*.* | ||||
| @PREFIX@/lib/libgtop*-1.1.so.* | ||||
							
								
								
									
										115
									
								
								debian/rules.in
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										115
									
								
								debian/rules.in
									
									
									
									
										vendored
									
									
										Executable file
									
								
							| @@ -0,0 +1,115 @@ | ||||
| #!/usr/bin/make -f | ||||
| # Sample debian/rules that uses debhelper. GNU copyright 1997 by Joey Hess. | ||||
| # This version is for a hypothetical package that builds an | ||||
| # architecture-dependant package, as well as an architecture-independent | ||||
| # package. | ||||
|  | ||||
| # Uncomment this to turn on verbose mode.  | ||||
| #export DH_VERBOSE=1 | ||||
|  | ||||
| i=$(shell pwd)/debian/tmp | ||||
| b=$(shell pwd)/debian/build | ||||
|  | ||||
| configure: configure.in | ||||
| 	@echo "--- Making configure script and configuring" | ||||
| 	chmod +x autogen.sh | ||||
| 	./autogen.sh --prefix=/@PREFIX@ --with-gnome=/@GNOMEPREFIX@ \ | ||||
| 	  --localstatedir=/@LOCALSTATEDIR@ | ||||
|  | ||||
| Makefile: configure | ||||
| 	@echo "--- Configuring" | ||||
| 	./configure --prefix=/@PREFIX@ --with-gnome=/@GNOMEPREFIX@ \ | ||||
| 	  --localstatedir=/@LOCALSTATEDIR@ | ||||
|  | ||||
| build: configure Makefile build-debstamp | ||||
| build-debstamp: | ||||
| 	@echo "--- Compiling" | ||||
| 	dh_testdir | ||||
| 	$(MAKE) all | ||||
| 	touch build-debstamp | ||||
|  | ||||
| clean: Makefile | ||||
| 	@echo "--- Cleaning" | ||||
| 	dh_testdir | ||||
| 	dh_clean | ||||
| 	-rm -rf static shared | ||||
| 	-rm -f build-debstamp install-debstamp | ||||
| 	-make -k distclean | ||||
| 	-rm -f `find . -name "*~"` | ||||
| 	-rm -f `find . -name "*\.la"` | ||||
| 	-rm -rf `find . -name "\.deps"` | ||||
| 	-rm -rf `find . -name "\.libs"` | ||||
| 	-rm -rf `find . -name "*\.rej"` | ||||
| 	-rm -rf debian/tmp `find debian/* -type d ! -name CVS` debian/files* core | ||||
| 	-rm -f debian/*substvars | ||||
|  | ||||
| install: build install-debstamp | ||||
| install-debstamp: | ||||
| 	@echo "--- Installing" | ||||
| 	dh_testdir | ||||
| 	dh_testroot | ||||
| 	rm -rf $(b) | ||||
| 	$(MAKE) install prefix=$(i)/@PREFIX@ exec_prefix=$(i)/@PREFIX@ \ | ||||
| 	  localstatedir=$(i)/@LOCALSTATEDIR@ | ||||
| 	touch install-debstamp | ||||
|  | ||||
| install-save: install | ||||
| 	rm -rf $(i).saved | ||||
| 	cp -a $(i) $(i).saved | ||||
|  | ||||
| install-saved: | ||||
| 	rm -rf $(i) | ||||
| 	cp -a $(i).saved $(i) | ||||
| 	rm -rf $(b) | ||||
| 	touch install-debstamp | ||||
|  | ||||
| binary-indep: build install | ||||
|  | ||||
| binary-arch: build install \ | ||||
| 		libgtop1@SUFFIX@ \ | ||||
| 		libgtop-dev@SUFFIX@ | ||||
|  | ||||
| # | ||||
| # libgtop1@SUFFIX@ | ||||
| # | ||||
|  | ||||
| libgtop1@SUFFIX@: install | ||||
| 	@echo "--- Building: $@" | ||||
| 	dh_installdocs       -p$@ -P$(b)/$@ README NEWS AUTHORS | ||||
| 	dh_installchangelogs -p$@ -P$(b)/$@ ChangeLog | ||||
| 	dh_movefiles         -p$@ -P$(b)/$@ | ||||
| 	dh_strip             -p$@ -P$(b)/$@  | ||||
| 	dh_compress          -p$@ -P$(b)/$@  | ||||
| 	dh_fixperms          -p$@ -P$(b)/$@  | ||||
| 	dh_installdeb        -p$@ -P$(b)/$@ | ||||
| 	dh_shlibdeps         -p$@ -P$(b)/$@ | ||||
| 	dh_gencontrol        -p$@ -P$(b)/$@ | ||||
| 	dh_makeshlibs        -p$@ -P$(b)/$@ -V | ||||
| 	dh_md5sums           -p$@ -P$(b)/$@ | ||||
| 	dh_builddeb          -p$@ -P$(b)/$@ | ||||
|  | ||||
| # | ||||
| # libgtop-dev | ||||
| # | ||||
|  | ||||
| libgtop-dev@SUFFIX@: install | ||||
| 	@echo "--- Building: $@" | ||||
| 	mkdir -p $(b)/$@/usr/doc | ||||
| 	cd $(b)/$@/usr/doc; ln -s libgtop1@SUFFIX@ $@	 | ||||
| 	dh_movefiles         -p$@ -P$(b)/$@ | ||||
| 	dh_strip             -p$@ -P$(b)/$@  | ||||
| 	dh_compress          -p$@ -P$(b)/$@  | ||||
| 	dh_fixperms          -p$@ -P$(b)/$@  | ||||
| 	dh_installdeb        -p$@ -P$(b)/$@ | ||||
| 	dh_shlibdeps         -p$@ -P$(b)/$@ | ||||
| 	dh_gencontrol        -p$@ -P$(b)/$@ | ||||
| 	dh_makeshlibs        -p$@ -P$(b)/$@ -V | ||||
| 	dh_undocumented      -p$@ -P$(b)/$@ \ | ||||
| 				libgtop-config.1 | ||||
| 	dh_md5sums           -p$@ -P$(b)/$@ | ||||
| 	dh_builddeb          -p$@ -P$(b)/$@ | ||||
|  | ||||
| binary: binary-indep binary-arch | ||||
| .PHONY: binary clean binary-indep binary-arch build install install-save install-saved | ||||
|  | ||||
|  | ||||
							
								
								
									
										10
									
								
								doc/.cvsignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								doc/.cvsignore
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | ||||
| texinfo.tex | ||||
| *.info | ||||
| Makefile.in | ||||
| Makefile | ||||
| *.log *.toc *.dvi *.aux *.cp *.fn *.vr *.tp *.ky *.pg | ||||
| *.ps | ||||
| auto-macros.texi | ||||
| version.texi | ||||
| stamp-vti | ||||
| *.html *.pdf | ||||
							
								
								
									
										49
									
								
								doc/ChangeLog
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								doc/ChangeLog
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,49 @@ | ||||
| 2002-03-12  James Henstridge  <james@daa.com.au> | ||||
|  | ||||
| 	* Makefile.am (MAKEINFO): using += seems to screw up the build | ||||
| 	with newer automakes.  Set it explicitly (using @MAKEINFO@) seems | ||||
| 	to be compatible with both. | ||||
|  | ||||
| 2001-11-26  Abel Cheung  <maddog@linux.org.hk> | ||||
|  | ||||
| 	* libgtop.texi, Makefile.am: Renamed to libgtop2.texi | ||||
| 	* about.texi: Very minor update. | ||||
|  | ||||
| 1999-10-18  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* about.texi: Added a note about LibGTop and GNOME. | ||||
|  | ||||
| 	* reference.texi (glibtop_proc_state): Fix description of the `state' | ||||
|  	field for LibGTop 1.0.x. | ||||
|  | ||||
| 1999-09-29  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* Makefile.am (MAKEINFO): Add `-I @libgtop_top_builddir@/doc' here. | ||||
|  | ||||
| 1999-05-16  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* main.texi: This is now the main file which will @include all | ||||
| 	chapter files so we can use `texinfo-multiple-files-update'. | ||||
|  | ||||
| 	* reference.texi: Added all missing sections with a "not yet written" | ||||
| 	notice. | ||||
|  | ||||
| 1999-05-16  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* white-paper.texi: Initial version of the LibGTop White Paper. | ||||
|  | ||||
| 	* Makefile.am: Create `auto-macros.texi' from `auto-macros.texi.in' | ||||
|  	which will contain some `@set' commands for the LibGTop version etc. | ||||
|  | ||||
| 	* auto-macros.texi.in: New file. This is a template for | ||||
| 	`auto-macros.texi' which will be automatically generated. | ||||
|  | ||||
| 1999-05-09  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* about.texi: Split the `libgtop.texi' into one file pro chapter, | ||||
| 	this is the "About LibGTop". | ||||
|  | ||||
| 	* reference.texi: The "LibGTop Reference Manual". | ||||
|  | ||||
| 	* libgtop.texi: Initial version of the new LibGTop Manual. | ||||
|  | ||||
							
								
								
									
										45
									
								
								doc/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								doc/Makefile.am
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,45 @@ | ||||
| info_TEXINFOS		= libgtop2.texi | ||||
|  | ||||
| libgtop2_TEXINFOS	= libgtop2.texi about.texi reference.texi \ | ||||
| 			  auto-macros.texi version.texi main.texi \ | ||||
| 			  white-paper.texi | ||||
|  | ||||
| MAKEINFO		= @MAKEINFO@ -I @libgtop_top_builddir@/doc | ||||
|  | ||||
| EXTRA_DIST		= auto-macros.texi.in | ||||
|  | ||||
| auto-macros.texi: auto-macros.texi.in Makefile | ||||
| ## Use sed and then mv to avoid problems if the user interrupts. | ||||
| 	sed -e 's#\%LIBGTOP_LIBDIR\%#$(libdir)#g' \ | ||||
| 	  -e 's#\%LIBGTOP_INCLUDEDIR\%#$(includedir)/libgtop-2.0#g' \ | ||||
| 	  -e 's#\%LIBGTOP_DATADIR\%#$(datadir)#g' \ | ||||
| 	  -e 's#\%LIBGTOP_EXTRA_LIBS\%#$(LIBGTOP_EXTRA_LIBS)#g' \ | ||||
| 	  -e 's#\%LIBGTOP_LIBS\%#$(LIBGTOP_LIBS)#g' \ | ||||
| 	  -e 's#\%LIBGTOP_INCS\%#$(LIBGTOP_INCS)#g' \ | ||||
| 	  -e 's#\%LIBGTOP_NAMES_LIBS\%#$(LIBGTOP_NAMES_LIBS)#g' \ | ||||
| 	  -e 's#\%LIBGTOP_NAMES_INCS\%#$(LIBGTOP_NAMES_INCS)#g' \ | ||||
| 	  -e 's#\%LIBGTOP_GUILE_LIBS\%#$(LIBGTOP_GUILE_LIBS)#g' \ | ||||
| 	  -e 's#\%LIBGTOP_GUILE_INCS\%#$(LIBGTOP_GUILE_INCS)#g' \ | ||||
| 	  -e 's#\%LIBGTOP_GUILE_NAMES_LIBS\%#$(LIBGTOP_GUILE_NAMES_LIBS)#g' \ | ||||
| 	  -e 's#\%LIBGTOP_GUILE_NAMES_INCS\%#$(LIBGTOP_GUILE_NAMES_INCS)#g' \ | ||||
| 	  -e 's#\%LIBGTOP_BINDIR\%#$(LIBGTOP_BINDIR)#g' \ | ||||
| 	  -e 's#\%LIBGTOP_SERVER\%#$(LIBGTOP_SERVER)#g' \ | ||||
| 	  -e 's#\%LIBGTOP_MAJOR_VERSION\%#$(LIBGTOP_MAJOR_VERSION)#g' \ | ||||
| 	  -e 's#\%LIBGTOP_MINOR_VERSION\%#$(LIBGTOP_MINOR_VERSION)#g' \ | ||||
| 	  -e 's#\%LIBGTOP_MICRO_VERSION\%#$(LIBGTOP_MICRO_VERSION)#g' \ | ||||
| 	  -e 's#\%LIBGTOP_VERSION\%#$(LIBGTOP_VERSION)#g' \ | ||||
| 	  -e 's#\%LIBGTOP_VERSION_CODE\%#$(LIBGTOP_VERSION_CODE)#g' \ | ||||
| 	  -e 's#\%LIBGTOP_SERVER_VERSION\%#$(LIBGTOP_SERVER_VERSION)#g' \ | ||||
| 	  -e 's#\%libgtop_sysdeps_dir\%#$(libgtop_sysdeps_dir)#g' \ | ||||
| 	  -e 's#\%libgtop_need_server\%#$(libgtop_need_server)#g' \ | ||||
| 	  -e 's#\%libgtop_use_machine_h\%#$(libgtop_use_machine_h)#g' \ | ||||
| 	  -e 's#\%libgtop_guile_found\%#$(libgtop_guile_found)#g' \ | ||||
| 	  -e 's#\%libgtop_want_examples\%#$(libgtop_want_examples)#g' \ | ||||
| 	      < $(srcdir)/auto-macros.texi.in > auto-macros.tmp | ||||
| 	echo '@c Set this if this is LibGTop 1.1.x' >> auto-macros.tmp | ||||
| 	if [ $(LIBGTOP_VERSION_CODE) -ge 1001000 ] ; then \ | ||||
| 	  echo '@set LIBGTOP-1-1' >> auto-macros.tmp ; \ | ||||
| 	else \ | ||||
| 	  echo '@clear LIBGTOP-1-1' >> auto-macros.tmp ; \ | ||||
| 	fi | ||||
| 	mv auto-macros.tmp auto-macros.texi | ||||
							
								
								
									
										123
									
								
								doc/about.texi
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										123
									
								
								doc/about.texi
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,123 @@ | ||||
| @node About, White Paper, Top, Top | ||||
| @chapter About LibGTop | ||||
|  | ||||
| LibGTop is a library to get system specific data such as CPU and Memory Usage | ||||
| and information about running Processes. | ||||
|  | ||||
| On Systems like Solaris or Digital Unix where you need special privileges to | ||||
| get those data, it uses a setuid/setgid server to do so. | ||||
|  | ||||
| Even if LibGTop is a part of the GNOME desktop environment | ||||
| (@uref{http://www.gnome.org}), the main interface of LibGTop is totally | ||||
| independent from any particular desktop environment, so you can also use it | ||||
| as a standalone library in any piece of GPLed software. | ||||
|  | ||||
| @menu | ||||
| * Availability::                Where to get LibGTop | ||||
| * Supported Platforms::         Supported Platforms | ||||
| * Mailing List::                Helping with LibGTop development | ||||
| * Thanks::                      People who contributed to LibGTop | ||||
| @end menu | ||||
|  | ||||
| @node Availability, Supported Platforms, About, About | ||||
| @section Availability | ||||
|  | ||||
| The master source of LibGTop is the GNOME CVS tree | ||||
| (see @uref{http://www.gnome.org} for details), but you can also get the | ||||
| latest release tarballs from | ||||
|  | ||||
| @display | ||||
| @uref{ftp://ftp.gnome.org/pub/GNOME/sources/libgtop/} | ||||
| @end display | ||||
|  | ||||
| @noindent | ||||
| or any of its mirror sites. | ||||
|  | ||||
| The latest stable version of LibGTop is 1.0.12 which is also the one that comes | ||||
| together with GNOME 1.0. It belongs to @code{LIBGTOP_STABLE_1_0} branch in CVS. | ||||
| Actual development occurs in the @code{libgtop-GNOME-2-0-port} which is | ||||
| currently versioned 1.90.0. | ||||
|  | ||||
| @node Supported Platforms, Mailing List, Availability, About | ||||
| @section Supported Platforms | ||||
|  | ||||
| The stable branch currently supports the following platforms: | ||||
|  | ||||
| @itemize @bullet | ||||
| @item All versions of Linux | ||||
|  | ||||
| LibGTop was tested under Linux 2.0.x and 2.2.x on the ix86 and the alpha, but | ||||
| it should also work without problems on SparcLinux or Linux 2.4.x. | ||||
|  | ||||
| Note: I'm speaking of the Linux kernel here, not the GNU/Linux operating system. | ||||
|  | ||||
| @item FreeBSD, NetBSD and OpenBSD | ||||
|  | ||||
| LibGTop was tested under FreeBSD 2.2.6 and 3.0, NetBSD 1.3.2 and OpenBSD 2.4. | ||||
| Support for NetBSD 1.4 was added in LibGTop 1.0.2. | ||||
|  | ||||
| @end itemize | ||||
|  | ||||
| The platforms listed above are known to be stable and working. However, if | ||||
| you're using the latest development version, you can use it on the following | ||||
| platforms as well: | ||||
|  | ||||
| @itemize @bullet | ||||
| @item BSD/OS | ||||
|  | ||||
| There is a port for BSD/OS (aka BSDI) 2.x and 3.x from Timur Bakeyev which | ||||
| should also work with 4.x. This isn't tested very well, but it should be | ||||
| working. | ||||
|  | ||||
| @item Digital Unix | ||||
|  | ||||
| There is some basic support for Digital Unix (formerly DEC OSF/1) V3.2C, but | ||||
| this may still be a bit unstable. I'm currently working on this port as time | ||||
| permits so it should be fully supported soon. | ||||
|  | ||||
| @item Solaris | ||||
|  | ||||
| The Solaris port currently works on Solaris 7 and maybe also on other releases. | ||||
| Thanks a lot to Drazen Kacar and everyone who helped working on this port. They | ||||
| have really done excellent work here and I'm pretty sure that this port will be | ||||
| fully functional on most Solaris versions in near future. | ||||
|  | ||||
| @end itemize | ||||
|  | ||||
| @node Mailing List, Thanks, Supported Platforms, About | ||||
| @section Mailing List | ||||
|  | ||||
| There is a @email{libgtop-devel-list@@egroups.com} mailing list for people who | ||||
| want to help with the development of LibGTop. | ||||
|  | ||||
| It is meant as a low-traffic, but high content-list where we can discuss | ||||
| technical details such as adding new sysdeps ports etc.  | ||||
|  | ||||
| Especially, I'd like to see people with a deeper knowledge of operating systems | ||||
| internals joining my list so we can discuss technical details of the sysdeps | ||||
| code.  | ||||
|  | ||||
| It is *not* for users that want to know how to compile LibGTop etc. | ||||
|  | ||||
| You can subscribe to this mailing list and view the mailing list archives | ||||
| on the LibGTop Page at @uref{http://www.home-of-linux.org/gnome/libgtop}. | ||||
|  | ||||
| @node Thanks,  , Mailing List, About | ||||
| @section Thanks | ||||
|  | ||||
| At the place I'd like to thank the following people who contributed to | ||||
| LibGTop (listed in chronological order): | ||||
|  | ||||
| @itemize @bullet | ||||
| @item Sebastian Wilhelmi who had the initial idea of LibGTop and helped | ||||
| me a lot in the early beginning. | ||||
| @item Josh Sled for the initial FreeBSD port. | ||||
| @item Jeremy Lea for his BSD patches. | ||||
| @item Timur Bakeyev for the BSDI port. | ||||
| @item Drazen Kacar and the other people on the LibGTop development mailing | ||||
| list for the Solaris port. | ||||
| @item Kevin Vandersloot for the effort to port to GNOME 2.0. | ||||
| @item All people sending me patches, having good ideas, ... | ||||
| @item Everyone I have forgotten in this list ... | ||||
| @end itemize | ||||
|  | ||||
							
								
								
									
										12
									
								
								doc/auto-macros.texi.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								doc/auto-macros.texi.in
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | ||||
| @c LibGTop major, minor and micro version. | ||||
| @set LIBGTOP_MAJOR_VERSION %LIBGTOP_MAJOR_VERSION% | ||||
| @set LIBGTOP_MINOR_VERSION %LIBGTOP_MINOR_VERSION% | ||||
| @set LIBGTOP_MICRO_VERSION %LIBGTOP_MICRO_VERSION% | ||||
|  | ||||
| @c LibGTop version and numerical version code ("1.234.567" -> 1234567). | ||||
| @set LIBGTOP_VERSION "%LIBGTOP_VERSION%" | ||||
| @set LIBGTOP_VERSION_CODE %LIBGTOP_VERSION_CODE% | ||||
|  | ||||
| @c LibGTop server version, increased each time the protocol changes. | ||||
| @set LIBGTOP_SERVER_VERSION %LIBGTOP_SERVER_VERSION% | ||||
|  | ||||
							
								
								
									
										107
									
								
								doc/internals.texi
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										107
									
								
								doc/internals.texi
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,107 @@ | ||||
| @node LibGTop Internals, , Reference Manual, Top | ||||
| @chapter LibGTop Internals | ||||
|  | ||||
| @menu | ||||
| * General Internals::           General Internals | ||||
| * Sysdeps Internals::           Sysdeps Internals | ||||
| @end menu | ||||
|  | ||||
| @node General Internals, Sysdeps Internals, LibGTop Internals, LibGTop Internals | ||||
| @section General Internals | ||||
|  | ||||
| @menu | ||||
| * glibtop::                     The server structure | ||||
| @end menu | ||||
|  | ||||
| @node glibtop,  , General Internals, General Internals | ||||
| @subsection The server structure - @code{glibtop} | ||||
|  | ||||
| @example | ||||
| @cartouche | ||||
| typedef struct _glibtop         glibtop; | ||||
|  | ||||
| struct _glibtop | ||||
| @{ | ||||
|         unsigned flags; | ||||
|         unsigned method; | ||||
|         unsigned error_method; | ||||
| #ifdef HAVE_GLIBTOP_MACHINE_H | ||||
|         glibtop_machine machine; | ||||
| #endif | ||||
|         int input [2]; | ||||
|         int output [2]; | ||||
|         int socket; | ||||
|         int ncpu; | ||||
|         unsigned long os_version_code; | ||||
|         const char *name; | ||||
|         const char *server_command; | ||||
|         const char *server_host; | ||||
|         const char *server_user; | ||||
|         const char *server_rsh; | ||||
|         unsigned long features; | ||||
|         unsigned long server_port; | ||||
|         glibtop_sysdeps sysdeps; | ||||
|         glibtop_sysdeps required; | ||||
|         glibtop_sysdeps wanted; | ||||
|         pid_t pid; | ||||
| @}; | ||||
| @end cartouche | ||||
| @end example | ||||
|  | ||||
| @node Sysdeps Internals,  , General Internals, LibGTop Internals | ||||
| @section Sysdeps Internals | ||||
|  | ||||
| @menu | ||||
| * glibtop_open_s::              Non-privileged initializations | ||||
| * glibtop_close_s::             Non-privileged cleanups | ||||
| @end menu | ||||
|  | ||||
| @node glibtop_open_s, glibtop_close_s, Sysdeps Internals, Sysdeps Internals | ||||
| @subsection glibtop_open_s | ||||
|  | ||||
| This function is used in the non-suid sysdeps library @samp{-lgtop_sysdeps} to | ||||
| initialize a server. It should do all initializations that do not need any | ||||
| privileges. | ||||
|  | ||||
| @example | ||||
| @cartouche | ||||
| void | ||||
| glibtop_open_s (glibtop *server, const char *program_name, | ||||
| 		const unsigned long features, | ||||
| 		const unsigned flags); | ||||
| @end cartouche | ||||
| @end example | ||||
|  | ||||
| @table @code | ||||
| @item server | ||||
| Pointer to the @code{glibtop} server structure. | ||||
| @item program_name | ||||
| Name of the calling program; the implementation will usually | ||||
| set @samp{server->name} to this so it'll be used as the program | ||||
| name in error messages. | ||||
| @end table | ||||
|  | ||||
| Typically, this function will set @code{server->name}, @code{server->ncpu} and | ||||
| @code{server->os_version_code} and initialize any of the @code{server->machine} | ||||
| fields which do not need any privileges. | ||||
|  | ||||
| It is normally implemented in @file{open.c} in the sysdeps directory. | ||||
|  | ||||
| @node glibtop_close_s,  , glibtop_open_s, Sysdeps Internals | ||||
| @subsection glibtop_close_s | ||||
|  | ||||
| This function is used in the non-suid sysdeps library @samp{-lgtop_sysdeps} to | ||||
| clean-up a server when it's no longer used. | ||||
|  | ||||
| It must free all resources that were allocated in @code{glibtop_open_s}. | ||||
|  | ||||
| @example | ||||
| @cartouche | ||||
| void | ||||
| glibtop_close_s (glibtop *server); | ||||
| @end cartouche | ||||
| @end example | ||||
|  | ||||
| It is normally implemented in @file{close.c} in the sysdeps directory, but may | ||||
| be empty. | ||||
|  | ||||
							
								
								
									
										89
									
								
								doc/libgtop2.texi
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								doc/libgtop2.texi
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,89 @@ | ||||
| \input texinfo   @c -*-texinfo-*- | ||||
| @c %**start of header | ||||
| @setfilename libgtop2.info | ||||
| @settitle LibGTop Reference Manual | ||||
| @setchapternewpage odd | ||||
| @c %**end of header | ||||
|  | ||||
| @include auto-macros.texi | ||||
| @include version.texi | ||||
|  | ||||
| @ifinfo | ||||
| This is the LibGTop Reference Manual version @value{VERSION} | ||||
| (last modified @value{UPDATED}). | ||||
|  | ||||
| Copyright 1999 Free Software Foundation, Inc. | ||||
|       | ||||
| Permission is granted to make and distribute verbatim | ||||
| copies of this manual provided the copyright notice and | ||||
| this permission notice are preserved on all copies. | ||||
|       | ||||
| @ignore | ||||
| Permission is granted to process this file through TeX | ||||
| and print the results, provided the printed document | ||||
| carries a copying permission notice identical to this | ||||
| one except for the removal of this paragraph (this | ||||
| paragraph not being relevant to the printed manual). | ||||
|       | ||||
| @end ignore | ||||
| Permission is granted to copy and distribute modified | ||||
| versions of this manual under the conditions for | ||||
| verbatim copying, provided also that the sections | ||||
| entitled ``Copying'' and ``GNU General Public License'' | ||||
| are included exactly as in the original, and provided | ||||
| that the entire resulting derived work is distributed | ||||
| under the terms of a permission notice identical to this | ||||
| one. | ||||
|       | ||||
| Permission is granted to copy and distribute | ||||
| translations of this manual into another language, | ||||
| under the above conditions for modified versions, | ||||
| except that this permission notice may be stated in a | ||||
| translation approved by the Free Software Foundation. | ||||
|  | ||||
| @format | ||||
| @dircategory Libraries: | ||||
| @direntry | ||||
| * LibGTop2: (libgtop2).			Library to get system specific data | ||||
| 					such as cpu and memory usage, active | ||||
| 					processes | ||||
| @end direntry | ||||
| @end format | ||||
|  | ||||
| @end ifinfo | ||||
|  | ||||
| @titlepage | ||||
| @title LibGTop Reference Manual | ||||
| @subtitle Version @value{VERSION} - @value{UPDATED} | ||||
| @author Martin Baulig | ||||
|  | ||||
| @page | ||||
| @vskip 0pt plus 1filll | ||||
| Copyright @copyright{} 1999 Free Software Foundation, Inc. | ||||
|  | ||||
| Permission is granted to make and distribute verbatim | ||||
| copies of this manual provided the copyright notice and | ||||
| this permission notice are preserved on all copies. | ||||
|       | ||||
| Permission is granted to copy and distribute modified | ||||
| versions of this manual under the conditions for | ||||
| verbatim copying, provided also that the sections | ||||
| entitled ``Copying'' and ``GNU General Public License'' | ||||
| are included exactly as in the original, and provided | ||||
| that the entire resulting derived work is distributed | ||||
| under the terms of a permission notice identical to this | ||||
| one. | ||||
|       | ||||
| Permission is granted to copy and distribute | ||||
| translations of this manual into another language, | ||||
| under the above conditions for modified versions, | ||||
| except that this permission notice may be stated in a | ||||
| translation approved by the Free Software Foundation. | ||||
| @end titlepage | ||||
|  | ||||
| @contents | ||||
|  | ||||
| @include main.texi | ||||
|  | ||||
| @bye | ||||
|  | ||||
							
								
								
									
										68
									
								
								doc/main.texi
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								doc/main.texi
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,68 @@ | ||||
| @node Top, About, (dir), (dir) | ||||
|  | ||||
| @menu | ||||
| * About::                       About LibGTop | ||||
| * White Paper::                 LibGTop White Paper | ||||
| * Reference Manual::            LibGTop Reference Manual | ||||
|  | ||||
|  --- The Detailed Node Listing --- | ||||
|  | ||||
| About LibGTop | ||||
|  | ||||
| * Availability::                Where to get LibGTop | ||||
| * Supported Platforms::         Supported Platforms | ||||
| * Mailing List::                Helping with LibGTop development | ||||
| * Thanks::                      People who contributed to LibGTop | ||||
|  | ||||
| LibGTop White Paper | ||||
|  | ||||
| * Introduction::                Introduction | ||||
| * Overview::                    Overview | ||||
|  | ||||
| Overview | ||||
|  | ||||
| * Interface Design::            Things that need to be considered | ||||
| * Server Implementation::       The LibGTop "server" | ||||
|  | ||||
| LibGTop Reference Manual | ||||
|  | ||||
| * System Dependent::            System Dependent Functions. | ||||
| * Common Functions::            Common Functions. | ||||
| * Library Functions::           Library Functions. | ||||
|  | ||||
| System Dependent Functions | ||||
|  | ||||
| * glibtop_cpu::                 CPU Usage. | ||||
| * glibtop_mem::                 Memory Usage. | ||||
| * glibtop_swap::                Swap Usage. | ||||
| * glibtop_uptime::              System Uptime. | ||||
| * glibtop_loadavg::             Load Average. | ||||
| * glibtop_proclist::            Process List. | ||||
| * glibtop_proc_state::          Process State. | ||||
| * glibtop_proc_uid::            Process UID and TTY Information. | ||||
| * glibtop_proc_mem::            Process Memory Information. | ||||
| * glibtop_proc_time::           Process Time Information. | ||||
| * glibtop_proc_signal::         Process Signal Information. | ||||
| * glibtop_proc_kernel::         Process Kernel Data Information. | ||||
| * glibtop_proc_segment::        Process Segment Information. | ||||
| * glibtop_proc_args::           Process Arguments. | ||||
| * glibtop_proc_map::            Process Memory Maps. | ||||
| * glibtop_netload::             Network Load. | ||||
| * glibtop_ppp::                 PPP Usage. | ||||
|  | ||||
| Common Functions | ||||
|  | ||||
| * glibtop_mountlist::           Mount List. | ||||
| * glibtop_fsusage::             File System Usage. | ||||
|  | ||||
| Library Functions | ||||
|  | ||||
| * glibtop_init::                Server Initialization. | ||||
| * glibtop_sysdeps::             Server Sysdeps. | ||||
| * Library Parameters::          Library Parameters. | ||||
| @end menu | ||||
|  | ||||
| @include about.texi | ||||
| @include white-paper.texi | ||||
| @include reference.texi | ||||
|  | ||||
							
								
								
									
										1807
									
								
								doc/reference.texi
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1807
									
								
								doc/reference.texi
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										90
									
								
								doc/white-paper.texi
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										90
									
								
								doc/white-paper.texi
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,90 @@ | ||||
| @node White Paper, Reference Manual, About, Top | ||||
| @chapter LibGTop White Paper | ||||
|  | ||||
| @menu | ||||
| * Introduction::                Introduction | ||||
| * Overview::                    Overview | ||||
| @end menu | ||||
|  | ||||
| @node Introduction, Overview, White Paper, White Paper | ||||
| @section Introduction | ||||
|  | ||||
| Many modern UNIX systems like Solaris, BSD or Digitial Unix only allow | ||||
| priviledged processes to read information like CPU and Memory Usage or | ||||
| information about running processes. | ||||
|  | ||||
| @itemize @bullet | ||||
| @item | ||||
| BSD, for instance, doesn't have any other way to get those data than reading | ||||
| directly from @file{/dev/kmem} and you need to be in the @code{kmem} group to | ||||
| be able to read this. | ||||
|  | ||||
| @item | ||||
| Other systems, like Digital Unix, allow all users to get things like CPU and | ||||
| Memory statistics, but only root may read information about any process other | ||||
| than the current one (you may not even get information about your own processes | ||||
| if you're not root). | ||||
|  | ||||
| @item | ||||
| Linux has a very nice @file{/proc} filesystem, but reading and parsing | ||||
| @file{/proc} is very slow and inefficient. | ||||
|  | ||||
| @item | ||||
| Solaris is a bit better, but you still need to be in the @code{sys} group or | ||||
| even root to get some data. | ||||
| @end itemize | ||||
|  | ||||
| Because of this system utilities like @code{ps}, @code{uptime} or @code{top} | ||||
| often are setgid kmem or setuid root. Usually, they're also very specific to | ||||
| the system they're written for and not easily portable to other systems without | ||||
| a lot of work. | ||||
|  | ||||
| This, of cause, becomes a problem for graphical tools like @code{gtop} - making | ||||
| a GTK+ program setgid or even setuid would be a security hole as big as you can | ||||
| drive the entire X11 source code through. For the GNOME project, we also needed | ||||
| some kind of library which provides all the required information in a portable | ||||
| since there's more than just one single program that wants to use them - for | ||||
| instance @code{gtop} and the @code{multiload}, @code{cpumemusage} and | ||||
| @code{netload} panel applets. | ||||
|  | ||||
| @node Overview,  , Introduction, White Paper | ||||
| @section Overview | ||||
|  | ||||
| This section should give you a short overview on how LibGTop was developed, which | ||||
| things needed to be considered and how it works. | ||||
|  | ||||
| @menu | ||||
| * Interface Design::            Things that need to be considered | ||||
| * Server Implementation::       The LibGTop "server" | ||||
| @end menu | ||||
|  | ||||
| @node Interface Design, Server Implementation, Overview, Overview | ||||
| @subsection Interface Design | ||||
|  | ||||
| At the very beginning, it was necessary to collect all the data the library part | ||||
| should provide and put them into some C structures. This was not that easiy as it | ||||
| might sound since LibGTop should be portable to any modern UNIX system with a common | ||||
| library part on all those systems, but the data that should be returned vary from | ||||
| system to system. For instance some systems support shared memory, but some others | ||||
| may not. | ||||
|  | ||||
| The header files where we define these C structures (which are system-independent) are | ||||
| shared between client and server. This way we can call the system dependent code | ||||
| directly where we do not need any special privileges to do so. | ||||
|  | ||||
| All of those structures contain a @code{flags} member which is interpreted as a bit | ||||
| mask and tells the caller of the library functions which of the fields in the returned | ||||
| structure are valid and which are not. | ||||
|  | ||||
| @node Server Implementation,  , Interface Design, Overview | ||||
| @subsection Server Implementation | ||||
|  | ||||
| The LibGTop @dfn{server} is a setgid/setuid binary which contains all the system | ||||
| dependent code which needs special privileges. It is only build if it's required | ||||
| on the current system (for instance, the Linux kernel provides all the required | ||||
| data via its @file{/proc} filesystem so we do not need the server at all) and it | ||||
| only contains the @dfn{features} which need privileges. | ||||
|  | ||||
| Whenever we do not need any privileges to get all the data for some of the requested | ||||
| structures (here called @dfn{features}) the library calls the sysdeps code directly | ||||
| rather than using the server. | ||||
							
								
								
									
										2
									
								
								dtd/.cvsignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								dtd/.cvsignore
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | ||||
| Makefile.in | ||||
| Makefile | ||||
							
								
								
									
										9
									
								
								dtd/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								dtd/Makefile.am
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | ||||
| backenddir	= @LIBGTOP_BACKEND_DIR@ | ||||
|  | ||||
| backend_DATA	= \ | ||||
| 	libgtop-backends.dtd	\ | ||||
| 	libgtop-backend-info.dtd | ||||
|  | ||||
| EXTRA_DIST	= | | ||||
| 	$(backend_DATA) | ||||
|  | ||||
							
								
								
									
										23
									
								
								dtd/libgtop-backend-info.dtd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								dtd/libgtop-backend-info.dtd
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,23 @@ | ||||
| <!ELEMENT BackendInfo (name,description?,comments?,authors,legalnotice)> | ||||
| <!ELEMENT name (short_name,long_name?)> | ||||
| <!ELEMENT short_name (#PCDATA)> | ||||
| <!ELEMENT long_name (#PCDATA)> | ||||
|  | ||||
| <!ELEMENT description (#PCDATA)> | ||||
|  | ||||
| <!ELEMENT authors (author)+> | ||||
| <!ELEMENT author (author_name,author_email?)> | ||||
| <!ELEMENT author_name (#PCDATA)> | ||||
| <!ELEMENT author_email (#PCDATA)> | ||||
|  | ||||
| <!ELEMENT legalnotice (license,copyright?)> | ||||
| <!ELEMENT license (#PCDATA)> | ||||
|  | ||||
| <!ELEMENT copyright (holder)+> | ||||
| <!ELEMENT holder (holder_year?,holder_name,holder_email?)> | ||||
| <!ELEMENT holder_year (#PCDATA)> | ||||
| <!ELEMENT holder_name (#PCDATA)> | ||||
| <!ELEMENT holder_email (#PCDATA)> | ||||
|  | ||||
| <!ELEMENT comments (comment)+> | ||||
| <!ELEMENT comment (#PCDATA)> | ||||
							
								
								
									
										11
									
								
								dtd/libgtop-backends.dtd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								dtd/libgtop-backends.dtd
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | ||||
| <!ELEMENT Backends (Backend)+> | ||||
|  | ||||
| <!ELEMENT Backend (Name,Location)> | ||||
| <!ELEMENT Name (#PCDATA)> | ||||
|  | ||||
| <!ELEMENT Location (LibtoolName?,ShlibName,ExtraLibs?)> | ||||
| <!ELEMENT LibtoolName (#PCDATA)> | ||||
| <!ELEMENT ShlibName (#PCDATA)> | ||||
|  | ||||
| <!ELEMENT ExtraLibs (ExtraLib)+> | ||||
| <!ELEMENT ExtraLib (LibtoolName?,ShlibName)> | ||||
| @@ -11,4 +11,6 @@ third_linux | ||||
| third_static | ||||
| second_static | ||||
| second_linux | ||||
| smp_static sysdeps_static netload_static procmap_static mountlist_static | ||||
| smp sysdeps netload procmap mountlist | ||||
| timings timings_static | ||||
|   | ||||
| @@ -1,3 +1,35 @@ | ||||
| 2001-01-14  Abel Cheung  <maddog@linux.org.hk> | ||||
|  | ||||
| 	* \*.c: bindtextdomain and textdomain uses GETTEXT_PACKAGE. | ||||
|  | ||||
| 	* Makefile.am, first.c, second.c, sysdeps.c: Make them at least | ||||
| 	compile for now, by disabling chunks which should belong to | ||||
| 	HEAD branch. | ||||
|  | ||||
| 1999-05-28  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* first.c, second.c, sysdeps.c: Use LibGTop version conditionals | ||||
|  	so we can more easily merge the code into LIBGTOP_STABLE_1_0. | ||||
|  | ||||
| 1999-05-07  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* timings.c (timersub): Renamed this to `libgtop_timersub' and define | ||||
| 	it on all systems. | ||||
|  | ||||
| Fri Apr  9 00:14:52 1999 Timur Bakeyev  <timur@gnu.org> | ||||
|  | ||||
| 	* timings.c: Added timersub defenition, to make code compilable on  | ||||
| 	BSDI. | ||||
|  | ||||
| 1999-03-24  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* timings.c: New example. | ||||
|  | ||||
| 1999-03-17  Martin Baulig  <martin@home-of-linux.org> | ||||
|  | ||||
| 	* first.c, second.c: Fixed a bug that caused a core dump when | ||||
| 	the sysdeps code does not return all data. | ||||
|  | ||||
| 1998-11-22  Martin Baulig  <baulig@taurus.uni-trier.de> | ||||
|  | ||||
| 	* netload.c: Call inet_ntoa () to get address and subnet | ||||
|   | ||||
| @@ -12,18 +12,19 @@ DEFS			= @DEFS@ | ||||
| libgtopdir		= $(libexecdir)/libgtop | ||||
|  | ||||
| libgtop_PROGRAMS	= first second\ | ||||
| 			  mountlist procmap netload sysdeps\ | ||||
| 			  mountlist procmap netload sysdeps timings \ | ||||
| 			  @static_targets@ @guile_examples@ @smp_examples@ | ||||
|  | ||||
| EXTRA_PROGRAMS		= first_static second_static \ | ||||
| 			  mountlist_static procmap_static \ | ||||
| 			  third third_static smp smp_static \ | ||||
| 			  netload_static sysdeps_static | ||||
| 			  netload_static sysdeps_static \ | ||||
| 			  timings_static | ||||
|  | ||||
| first_SOURCES		= first.c | ||||
| first_LDADD		= $(top_builddir)/lib/libgtop.la \ | ||||
| 			  $(top_builddir)/sysdeps/common/libgtop_common.la \ | ||||
| 			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \ | ||||
| first_LDADD		= $(top_builddir)/lib/libgtop-2.0.la \ | ||||
| 			  $(top_builddir)/sysdeps/common/libgtop_common-2.0.la \ | ||||
| 			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \ | ||||
| 			  @LIBSUPPORT@ @INTLLIBS@ | ||||
|  | ||||
| first_static_SOURCES	= $(first_SOURCES) | ||||
| @@ -31,9 +32,9 @@ first_static_LDADD	= $(first_LDADD) | ||||
| first_static_LDFLAGS	= -static | ||||
|  | ||||
| second_SOURCES		= second.c | ||||
| second_LDADD		= $(top_builddir)/lib/libgtop.la \ | ||||
| 			  $(top_builddir)/sysdeps/common/libgtop_common.la \ | ||||
| 			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \ | ||||
| second_LDADD		= $(top_builddir)/lib/libgtop-2.0.la \ | ||||
| 			  $(top_builddir)/sysdeps/common/libgtop_common-2.0.la \ | ||||
| 			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \ | ||||
| 			  @LIBSUPPORT@ @INTLLIBS@ | ||||
|  | ||||
| second_static_SOURCES	= $(second_SOURCES) | ||||
| @@ -41,9 +42,9 @@ second_static_LDADD	= $(second_LDADD) | ||||
| second_static_LDFLAGS	= -static | ||||
|  | ||||
| procmap_SOURCES		= procmap.c | ||||
| procmap_LDADD		= $(top_builddir)/lib/libgtop.la \ | ||||
| 			  $(top_builddir)/sysdeps/common/libgtop_common.la \ | ||||
| 			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \ | ||||
| procmap_LDADD		= $(top_builddir)/lib/libgtop-2.0.la \ | ||||
| 			  $(top_builddir)/sysdeps/common/libgtop_common-2.0.la \ | ||||
| 			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \ | ||||
| 			  @LIBSUPPORT@ @INTLLIBS@ | ||||
|  | ||||
|  | ||||
| @@ -53,9 +54,9 @@ procmap_static_LDADD	= $(procmap_LDADD) | ||||
| procmap_static_LDFLAGS	= -static | ||||
|  | ||||
| netload_SOURCES		= netload.c | ||||
| netload_LDADD		= $(top_builddir)/lib/libgtop.la \ | ||||
| 			  $(top_builddir)/sysdeps/common/libgtop_common.la \ | ||||
| 			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \ | ||||
| netload_LDADD		= $(top_builddir)/lib/libgtop-2.0.la \ | ||||
| 			  $(top_builddir)/sysdeps/common/libgtop_common-2.0.la \ | ||||
| 			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \ | ||||
| 			  @LIBSUPPORT@ @INTLLIBS@ | ||||
|  | ||||
| netload_static_SOURCES	= $(netload_SOURCES) | ||||
| @@ -63,24 +64,24 @@ netload_static_LDADD	= $(netload_LDADD) | ||||
| netload_static_LDFLAGS	= -static | ||||
|  | ||||
| sysdeps_SOURCES		= sysdeps.c | ||||
| sysdeps_LDADD		= $(top_builddir)/lib/libgtop.la \ | ||||
| 			  $(top_builddir)/sysdeps/common/libgtop_common.la \ | ||||
| 			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \ | ||||
| sysdeps_LDADD		= $(top_builddir)/lib/libgtop-2.0.la \ | ||||
| 			  $(top_builddir)/sysdeps/common/libgtop_common-2.0.la \ | ||||
| 			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \ | ||||
| 			  @LIBSUPPORT@ @INTLLIBS@ | ||||
|  | ||||
| sysdeps_static_SOURCES	= $(sysdeps_SOURCES) | ||||
| sysdeps_static_LDADD	= $(sysdeps_LDADD) | ||||
| sysdeps_static_LDFLAGS	= -static | ||||
|  | ||||
| third_guile_names_LIBS	= $(top_builddir)/sysdeps/guile/names/libgtop_guile_names.la | ||||
| third_names_LIBS	= $(top_builddir)/sysdeps/names/libgtop_names.la | ||||
| third_guile_names_LIBS	= $(top_builddir)/sysdeps/guile/names/libgtop_guile_names-2.0.la | ||||
| third_names_LIBS	= $(top_builddir)/sysdeps/names/libgtop_names-2.0.la | ||||
|  | ||||
| third_SOURCES		= third.c | ||||
| third_LDADD		= $(top_builddir)/sysdeps/guile/libgtop_guile.la \ | ||||
| third_LDADD		= $(top_builddir)/sysdeps/guile/libgtop_guile-2.0.la \ | ||||
| 			  $(third_guile_names_LIBS) $(third_names_LIBS) \ | ||||
| 			  $(top_builddir)/lib/libgtop.la \ | ||||
| 			  $(top_builddir)/sysdeps/common/libgtop_common.la \ | ||||
| 			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \ | ||||
| 			  $(top_builddir)/lib/libgtop-2.0.la \ | ||||
| 			  $(top_builddir)/sysdeps/common/libgtop_common-2.0.la \ | ||||
| 			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \ | ||||
| 			  @GUILE_LIBS@ @LIBSUPPORT@ @INTLLIBS@ | ||||
|  | ||||
| third_static_SOURCES	= $(third_SOURCES) | ||||
| @@ -88,9 +89,9 @@ third_static_LDADD	= $(third_LDADD) | ||||
| third_static_LDFLAGS	= -static | ||||
|  | ||||
| mountlist_SOURCES	= mountlist.c | ||||
| mountlist_LDADD		= $(top_builddir)/lib/libgtop.la \ | ||||
| 			  $(top_builddir)/sysdeps/common/libgtop_common.la \ | ||||
| 			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \ | ||||
| mountlist_LDADD		= $(top_builddir)/lib/libgtop-2.0.la \ | ||||
| 			  $(top_builddir)/sysdeps/common/libgtop_common-2.0.la \ | ||||
| 			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \ | ||||
| 			  @LIBSUPPORT@ @INTLLIBS@ | ||||
|  | ||||
| mountlist_static_SOURCES= $(mountlist_SOURCES) | ||||
| @@ -99,12 +100,22 @@ mountlist_static_LDFLAGS= -static | ||||
|  | ||||
|  | ||||
| smp_SOURCES		= smp.c | ||||
| smp_LDADD		= $(top_builddir)/lib/libgtop.la \ | ||||
| 			  $(top_builddir)/sysdeps/common/libgtop_common.la \ | ||||
| 			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps.la \ | ||||
| smp_LDADD		= $(top_builddir)/lib/libgtop-2.0.la \ | ||||
| 			  $(top_builddir)/sysdeps/common/libgtop_common-2.0.la \ | ||||
| 			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \ | ||||
| 			  @LIBSUPPORT@ @INTLLIBS@ | ||||
|  | ||||
| smp_static_SOURCES	= $(smp_SOURCES) | ||||
| smp_static_LDADD	= $(smp_LDADD) | ||||
| smp_static_LDFLAGS	= -static | ||||
|  | ||||
| timings_SOURCES		= timings.c | ||||
| timings_LDADD		= $(top_builddir)/lib/libgtop-2.0.la \ | ||||
| 			  $(top_builddir)/sysdeps/common/libgtop_common-2.0.la \ | ||||
| 			  $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps-2.0.la \ | ||||
| 			  @LIBSUPPORT@ @INTLLIBS@ | ||||
|  | ||||
| timings_static_SOURCES	= $(timings_SOURCES) | ||||
| timings_static_LDADD	= $(timings_LDADD) | ||||
| timings_static_LDFLAGS	= -static | ||||
|  | ||||
|   | ||||
| @@ -52,8 +52,8 @@ main (int argc, char *argv []) | ||||
| 	count = PROFILE_COUNT; | ||||
|  | ||||
| 	setlocale (LC_ALL, ""); | ||||
| 	bindtextdomain (PACKAGE, GTOPLOCALEDIR); | ||||
| 	textdomain (PACKAGE); | ||||
| 	bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR); | ||||
| 	textdomain (GETTEXT_PACKAGE); | ||||
| 	 | ||||
| 	glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN); | ||||
|  | ||||
| @@ -320,7 +320,7 @@ main (int argc, char *argv []) | ||||
| 		glibtop_get_proc_kernel (&data.proc_kernel, pid); | ||||
|  | ||||
| 	printf ("Proc_Kernel  PID  %5d (0x%08lx): " | ||||
| 		"%lu %lu %lu %lu %lu %lu %lu %lu (%s)\n", (int) pid, | ||||
| 		"%lu %lu %lu %lu %lu 0x%lx 0x%lx 0x%lx (%s)\n", (int) pid, | ||||
| 		(unsigned long) data.proc_kernel.flags, | ||||
| 		(unsigned long) data.proc_kernel.k_flags, | ||||
| 		(unsigned long) data.proc_kernel.min_flt, | ||||
| @@ -344,7 +344,7 @@ main (int argc, char *argv []) | ||||
| 	printf ("Proc_Args    PID  %5d (0x%08lx): %lu - '%s'\n", (int) pid, | ||||
| 		(unsigned long) data.proc_args.flags, | ||||
| 		(unsigned long) data.proc_args.size, | ||||
| 		args); | ||||
| 		args ? args : ""); | ||||
|  | ||||
| 	glibtop_free (args); | ||||
|  | ||||
| @@ -430,7 +430,7 @@ main (int argc, char *argv []) | ||||
| 		glibtop_get_proc_kernel (&data.proc_kernel, ppid); | ||||
|  | ||||
| 	printf ("Proc_Kernel  PPID %5d (0x%08lx): " | ||||
| 		"%lu %lu %lu %lu %lu %lu %lu %lu (%s)\n", (int) ppid, | ||||
| 		"%lu %lu %lu %lu %lu 0x%lx 0x%lx 0x%lx (%s)\n", (int) ppid, | ||||
| 		(unsigned long) data.proc_kernel.flags, | ||||
| 		(unsigned long) data.proc_kernel.k_flags, | ||||
| 		(unsigned long) data.proc_kernel.min_flt, | ||||
| @@ -454,7 +454,7 @@ main (int argc, char *argv []) | ||||
| 	printf ("Proc_Args    PID  %5d (0x%08lx): %lu - '%s'\n", (int) ppid, | ||||
| 		(unsigned long) data.proc_args.flags, | ||||
| 		(unsigned long) data.proc_args.size, | ||||
| 		args); | ||||
| 		args ? args : ""); | ||||
|  | ||||
| 	glibtop_free (args); | ||||
|  | ||||
| @@ -541,7 +541,7 @@ main (int argc, char *argv []) | ||||
| 		glibtop_get_proc_kernel (&data.proc_kernel, 1); | ||||
|  | ||||
| 	printf ("Proc_Kernel  INIT %5d (0x%08lx): " | ||||
| 		"%lu %lu %lu %lu %lu %lu %lu %lu (%s)\n", 1, | ||||
| 		"%lu %lu %lu %lu %lu 0x%lx 0x%lx 0x%lx (%s)\n", 1, | ||||
| 		(unsigned long) data.proc_kernel.flags, | ||||
| 		(unsigned long) data.proc_kernel.k_flags, | ||||
| 		(unsigned long) data.proc_kernel.min_flt, | ||||
| @@ -565,7 +565,7 @@ main (int argc, char *argv []) | ||||
| 	printf ("Proc_Args    PID  %5d (0x%08lx): %lu - '%s'\n", 1, | ||||
| 		(unsigned long) data.proc_args.flags, | ||||
| 		(unsigned long) data.proc_args.size, | ||||
| 		args); | ||||
| 		args ? args : ""); | ||||
|  | ||||
| 	glibtop_free (args); | ||||
|  | ||||
|   | ||||
| @@ -47,8 +47,8 @@ main (int argc, char *argv []) | ||||
| 	char buffer [BUFSIZ]; | ||||
|  | ||||
| 	setlocale (LC_ALL, ""); | ||||
| 	bindtextdomain (PACKAGE, GTOPLOCALEDIR); | ||||
| 	textdomain (PACKAGE); | ||||
| 	bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR); | ||||
| 	textdomain (GETTEXT_PACKAGE); | ||||
| 	 | ||||
| 	glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN); | ||||
|  | ||||
|   | ||||
| @@ -43,7 +43,7 @@ int | ||||
| main (int argc, char *argv []) | ||||
| { | ||||
| 	glibtop_netload netload; | ||||
| 	unsigned method, count, port, i; | ||||
| 	unsigned method, count, port; | ||||
| 	struct in_addr addr, subnet; | ||||
| 	char *address_string, *subnet_string; | ||||
| 	char buffer [BUFSIZ]; | ||||
| @@ -51,8 +51,8 @@ main (int argc, char *argv []) | ||||
| 	count = PROFILE_COUNT; | ||||
|  | ||||
| 	setlocale (LC_ALL, ""); | ||||
| 	bindtextdomain (PACKAGE, GTOPLOCALEDIR); | ||||
| 	textdomain (PACKAGE); | ||||
| 	bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR); | ||||
| 	textdomain (GETTEXT_PACKAGE); | ||||
| 	 | ||||
| 	glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN); | ||||
|  | ||||
|   | ||||
| @@ -58,8 +58,8 @@ main (int argc, char *argv []) | ||||
| 	count = PROFILE_COUNT; | ||||
|  | ||||
| 	setlocale (LC_ALL, ""); | ||||
| 	bindtextdomain (PACKAGE, GTOPLOCALEDIR); | ||||
| 	textdomain (PACKAGE); | ||||
| 	bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR); | ||||
| 	textdomain (GETTEXT_PACKAGE); | ||||
| 	 | ||||
| 	glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN); | ||||
|  | ||||
| @@ -97,7 +97,7 @@ main (int argc, char *argv []) | ||||
| 		unsigned device, device_major, device_minor; | ||||
| 		char perm [5]; | ||||
| 		 | ||||
| 		if (maps [i].flags & (1 << GLIBTOP_MAP_ENTRY_FILENAME)) | ||||
| 		if (maps [i].flags & (1L << GLIBTOP_MAP_ENTRY_FILENAME)) | ||||
| 			filename = maps [i].filename; | ||||
|  | ||||
| #ifdef GLIBTOP_INODEDB | ||||
| @@ -116,24 +116,41 @@ main (int argc, char *argv []) | ||||
| 		device_minor = (device & 255); | ||||
| 		device_major = ((device >> 8) & 255); | ||||
|  | ||||
| 		if (filename) | ||||
| 			fprintf (stderr, "%08lx-%08lx %08lx - " | ||||
| 				 "%02x:%02x %08lu - %4s - %s\n", | ||||
| 		if (filename) { | ||||
| 			char *format; | ||||
|  | ||||
| 			if (sizeof (void*) == 8) | ||||
| 				format = "%016lx-%016lx %016lx - " | ||||
| 					 "%02x:%02x %08lu - %4s - %s\n"; | ||||
| 			else | ||||
| 				format = "%08lx-%08lx %08lx - " | ||||
| 					 "%02x:%02x %08lu - %4s - %s\n"; | ||||
|  | ||||
| 			fprintf (stderr, format, | ||||
| 				 (unsigned long) maps [i].start, | ||||
| 				 (unsigned long) maps [i].end, | ||||
| 				 (unsigned long) maps [i].offset, | ||||
| 				 device_major, device_minor, | ||||
| 				 (unsigned long) maps [i].inode, | ||||
| 				 perm, filename); | ||||
| 		else | ||||
| 			fprintf (stderr, "%08lx-%08lx %08lx - " | ||||
| 				 "%02x:%02x %08lu - %4s\n", | ||||
| 		} else { | ||||
| 			char * format; | ||||
|  | ||||
| 			if (sizeof (void*) == 8) | ||||
| 				format = "%016lx-%016lx %016lx - " | ||||
| 					 "%02x:%02x %08lu - %4s\n"; | ||||
| 			else | ||||
| 				format = "%08lx-%08lx %08lx - " | ||||
| 					 "%02x:%02x %08lu - %4s\n"; | ||||
|  | ||||
| 			fprintf (stderr, format, | ||||
| 				 (unsigned long) maps [i].start, | ||||
| 				 (unsigned long) maps [i].end, | ||||
| 				 (unsigned long) maps [i].offset, | ||||
| 				 device_major, device_minor, | ||||
| 				 (unsigned long) maps [i].inode, | ||||
| 				 perm); | ||||
| 		} | ||||
|  | ||||
| 		if (filename && (filename != maps [i].filename)) | ||||
| 			glibtop_free (filename); | ||||
|   | ||||
| @@ -22,6 +22,7 @@ | ||||
| */ | ||||
|  | ||||
| #include <locale.h> | ||||
| #include <math.h> | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/open.h> | ||||
| @@ -31,8 +32,6 @@ | ||||
| #include <glibtop/union.h> | ||||
| #include <glibtop/sysdeps.h> | ||||
|  | ||||
| #include <math.h> | ||||
|  | ||||
| static void | ||||
| output (pid_t pid) | ||||
| { | ||||
| @@ -52,7 +51,7 @@ output (pid_t pid) | ||||
| 	printf ("\n"); | ||||
| 		 | ||||
| 	glibtop_get_proc_state (&data.proc_state, pid); | ||||
| 		 | ||||
|  | ||||
| 	printf ("Proc_State   PID  %5d (0x%08lx): " | ||||
| 		"'%s', %c, %lu, %lu\n", (int) pid, | ||||
| 		(unsigned long) data.proc_state.flags, | ||||
| @@ -61,7 +60,7 @@ output (pid_t pid) | ||||
| 		(unsigned long) data.proc_state.gid); | ||||
| 		 | ||||
| 	glibtop_get_proc_uid (&data.proc_uid, pid); | ||||
| 		 | ||||
| 	 | ||||
| 	printf ("Proc_Uid     PID  %5d (0x%08lx): " | ||||
| 		"%d %d %d %d %d %d %d %d %d %d %d %d\n", (int) pid, | ||||
| 		(unsigned long) data.proc_uid.flags, | ||||
| @@ -71,7 +70,7 @@ output (pid_t pid) | ||||
| 		data.proc_uid.pgrp, data.proc_uid.session, | ||||
| 		data.proc_uid.tty, data.proc_uid.tpgid, | ||||
| 		data.proc_uid.priority, data.proc_uid.nice); | ||||
| 		 | ||||
|  | ||||
| 	glibtop_get_proc_mem (&data.proc_mem, pid); | ||||
| 		 | ||||
| 	printf ("Proc_Mem     PID  %5d (0x%08lx): " | ||||
| @@ -126,7 +125,7 @@ output (pid_t pid) | ||||
| 	glibtop_get_proc_kernel (&data.proc_kernel, pid); | ||||
|  | ||||
| 	printf ("Proc_Kernel  PID  %5d (0x%08lx): " | ||||
| 		"%lu %lu %lu %lu %lu %lu %lu %lu (%s)\n", (int) pid, | ||||
| 		"%lu %lu %lu %lu %lu 0x%lx 0x%lx 0x%lx (%s)\n", (int) pid, | ||||
| 		(unsigned long) data.proc_kernel.flags, | ||||
| 		(unsigned long) data.proc_kernel.k_flags, | ||||
| 		(unsigned long) data.proc_kernel.min_flt, | ||||
| @@ -150,7 +149,7 @@ output (pid_t pid) | ||||
| 	printf ("Proc_Args    PID  %5d (0x%08lx): %lu - '%s'\n", (int) pid, | ||||
| 		(unsigned long) data.proc_args.flags, | ||||
| 		(unsigned long) data.proc_args.size, | ||||
| 		args); | ||||
| 		args ? args : ""); | ||||
|  | ||||
| 	glibtop_free (args); | ||||
|  | ||||
| @@ -240,8 +239,8 @@ main (int argc, char *argv []) | ||||
| 	unsigned *ptr, pid, i; | ||||
|  | ||||
| 	setlocale (LC_ALL, ""); | ||||
| 	bindtextdomain (PACKAGE, GTOPLOCALEDIR); | ||||
| 	textdomain (PACKAGE); | ||||
| 	bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR); | ||||
| 	textdomain (GETTEXT_PACKAGE); | ||||
| 	 | ||||
| 	glibtop_init (); | ||||
|  | ||||
|   | ||||
| @@ -22,13 +22,12 @@ | ||||
| */ | ||||
|  | ||||
| #include <locale.h> | ||||
| #include <math.h> | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/cpu.h> | ||||
| #include <glibtop/xmalloc.h> | ||||
|  | ||||
| #include <math.h> | ||||
|  | ||||
| int | ||||
| main (int argc, char *argv []) | ||||
| { | ||||
| @@ -41,9 +40,11 @@ main (int argc, char *argv []) | ||||
| 	int ncpu, i; | ||||
|  | ||||
| 	setlocale (LC_ALL, ""); | ||||
| 	bindtextdomain (PACKAGE, GTOPLOCALEDIR); | ||||
| 	textdomain (PACKAGE); | ||||
| 	bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR); | ||||
| 	textdomain (GETTEXT_PACKAGE); | ||||
| 	 | ||||
| 	glibtop_init(); | ||||
|  | ||||
| 	glibtop_get_cpu (&cpu); | ||||
|  | ||||
| 	ncpu = glibtop_global_server->ncpu ? glibtop_global_server->ncpu : 1; | ||||
| @@ -67,7 +68,7 @@ main (int argc, char *argv []) | ||||
| 	memset (separator, '-', 91); | ||||
| 	separator [92] = '\0'; | ||||
|  | ||||
| 	sprintf (buffer, _("Ticks (%d per second):"), frequency); | ||||
| 	sprintf (buffer, _("Ticks (%ld per second):"), frequency); | ||||
|  | ||||
| 	printf ("\n\n%-26s %12s %12s %12s %12s %12s\n%s\n", buffer, | ||||
| 		_("Total"), _("User"), _("Nice"), _("Sys"), _("Idle"), separator); | ||||
|   | ||||
| @@ -38,14 +38,14 @@ int | ||||
| main (int argc, char *argv []) | ||||
| { | ||||
| 	glibtop_sysdeps sysdeps; | ||||
| 	unsigned method, count, port, i; | ||||
| 	unsigned method, count, port; | ||||
| 	char buffer [BUFSIZ]; | ||||
|  | ||||
| 	count = PROFILE_COUNT; | ||||
|  | ||||
| 	setlocale (LC_ALL, ""); | ||||
| 	bindtextdomain (PACKAGE, GTOPLOCALEDIR); | ||||
| 	textdomain (PACKAGE); | ||||
| 	bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR); | ||||
| 	textdomain (GETTEXT_PACKAGE); | ||||
| 	 | ||||
| 	glibtop_init_r (&glibtop_global_server, 0, GLIBTOP_INIT_NO_OPEN); | ||||
|  | ||||
| @@ -69,7 +69,7 @@ main (int argc, char *argv []) | ||||
|  | ||||
| 	glibtop_get_sysdeps (&sysdeps); | ||||
|  | ||||
| #define FEATURE_CHECK(f) ((sysdeps.features & (1 << GLIBTOP_SYSDEPS_##f##)) ? 1 : 0) | ||||
| #define FEATURE_CHECK(f) ((sysdeps.features & (1L << GLIBTOP_SYSDEPS_##f##)) ? 1 : 0) | ||||
|  | ||||
| 	printf ("Sysdeps (0x%08lx):\n\n" | ||||
| 		"\tfeatures:\t\t0x%08lx\n\n" | ||||
|   | ||||
| @@ -38,8 +38,8 @@ int | ||||
| main (int argc, char *argv[]) | ||||
| { | ||||
| 	setlocale (LC_ALL, ""); | ||||
| 	bindtextdomain (PACKAGE, GTOPLOCALEDIR); | ||||
| 	textdomain (PACKAGE); | ||||
| 	bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR); | ||||
| 	textdomain (GETTEXT_PACKAGE); | ||||
|  | ||||
| 	gh_enter (argc, argv, main_prog); | ||||
| 	exit (0); | ||||
|   | ||||
							
								
								
									
										357
									
								
								examples/timings.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										357
									
								
								examples/timings.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,357 @@ | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #include <locale.h> | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/open.h> | ||||
| #include <glibtop/close.h> | ||||
| #include <glibtop/xmalloc.h> | ||||
|  | ||||
| #include <glibtop/parameter.h> | ||||
|  | ||||
| #include <glibtop/union.h> | ||||
| #include <glibtop/sysdeps.h> | ||||
|  | ||||
| #include <sys/times.h> | ||||
| #include <sys/resource.h> | ||||
|  | ||||
| #ifndef PROFILE_COUNT | ||||
| #define PROFILE_COUNT			100000L | ||||
| #endif | ||||
|  | ||||
| #ifndef PROFILE_COUNT_EXPENSIVE | ||||
| #define PROFILE_COUNT_EXPENSIVE		10000L | ||||
| #endif | ||||
|  | ||||
| #define ELAPSED_UTIME ((unsigned long) elapsed_utime.tv_sec * 1000000 +	(unsigned long) elapsed_utime.tv_usec) | ||||
| #define ELAPSED_STIME ((unsigned long) elapsed_stime.tv_sec * 1000000 + (unsigned long) elapsed_stime.tv_usec) | ||||
|  | ||||
| #define libgtop_timeradd(tvp, uvp, vvp)						\ | ||||
| 	do {								\ | ||||
| 		(vvp)->tv_sec = (tvp)->tv_sec + (uvp)->tv_sec;		\ | ||||
| 		(vvp)->tv_usec = (tvp)->tv_usec + (uvp)->tv_usec;	\ | ||||
| 		if ((vvp)->tv_usec >= 1000000) {			\ | ||||
| 			(vvp)->tv_sec++;				\ | ||||
| 			(vvp)->tv_usec -= 1000000;			\ | ||||
| 		}							\ | ||||
| 	} while (0) | ||||
| #define libgtop_timersub(tvp, uvp, vvp)						\ | ||||
| 	do {								\ | ||||
| 		(vvp)->tv_sec = (tvp)->tv_sec - (uvp)->tv_sec;		\ | ||||
| 		(vvp)->tv_usec = (tvp)->tv_usec - (uvp)->tv_usec;	\ | ||||
| 		if ((vvp)->tv_usec < 0) {				\ | ||||
| 			(vvp)->tv_sec--;				\ | ||||
| 			(vvp)->tv_usec += 1000000;			\ | ||||
| 		}							\ | ||||
| 	} while (0) | ||||
|  | ||||
| int | ||||
| main (int argc, char *argv []) | ||||
| { | ||||
| 	glibtop_union data; | ||||
| 	unsigned c, count, *ptr; | ||||
| 	struct rusage total_start, total_end; | ||||
| 	struct rusage rusage_start, rusage_end; | ||||
| 	struct timeval elapsed_utime, elapsed_stime; | ||||
| 	pid_t pid; | ||||
|  | ||||
| 	count = PROFILE_COUNT; | ||||
|  | ||||
| 	setlocale (LC_ALL, ""); | ||||
| 	bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR); | ||||
| 	textdomain (GETTEXT_PACKAGE); | ||||
|  | ||||
| 	printf ("%-12s (%-10s): %7s - %9s - %9s\n", | ||||
| 		"Feature", "Flags", "Count", "utime", "stime"); | ||||
| 	printf ("-------------------------------------------" | ||||
| 		"---------------\n"); | ||||
| 	 | ||||
| 	glibtop_init_r (&glibtop_global_server, 0, 0); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &total_start); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_start); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_cpu (&data.cpu); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_end); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime, | ||||
| 			  &elapsed_utime); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime, | ||||
| 			  &elapsed_stime); | ||||
|  | ||||
| 	printf ("CPU          (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n", | ||||
| 		(unsigned long) data.cpu.flags, PROFILE_COUNT, | ||||
| 		(long double) ELAPSED_UTIME / PROFILE_COUNT, | ||||
| 		(long double) ELAPSED_STIME / PROFILE_COUNT); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_start); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT_EXPENSIVE; c++) | ||||
| 		glibtop_get_mem (&data.mem); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_end); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime, | ||||
| 			  &elapsed_utime); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime, | ||||
| 			  &elapsed_stime); | ||||
|  | ||||
| 	printf ("Memory       (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n", | ||||
| 		(unsigned long) data.mem.flags, PROFILE_COUNT_EXPENSIVE, | ||||
| 		(long double) ELAPSED_UTIME / PROFILE_COUNT_EXPENSIVE, | ||||
| 		(long double) ELAPSED_STIME / PROFILE_COUNT_EXPENSIVE); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_start); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT_EXPENSIVE; c++) | ||||
| 		glibtop_get_swap (&data.swap); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_end); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime, | ||||
| 			  &elapsed_utime); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime, | ||||
| 			  &elapsed_stime); | ||||
|  | ||||
| 	printf ("Swap         (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n", | ||||
| 		(unsigned long) data.swap.flags, PROFILE_COUNT_EXPENSIVE, | ||||
| 		(long double) ELAPSED_UTIME / PROFILE_COUNT_EXPENSIVE, | ||||
| 		(long double) ELAPSED_STIME / PROFILE_COUNT_EXPENSIVE); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_start); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_uptime (&data.uptime); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_end); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime, | ||||
| 			  &elapsed_utime); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime, | ||||
| 			  &elapsed_stime); | ||||
|  | ||||
| 	printf ("Uptime       (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n", | ||||
| 		(unsigned long) data.uptime.flags, PROFILE_COUNT, | ||||
| 		(long double) ELAPSED_UTIME / PROFILE_COUNT, | ||||
| 		(long double) ELAPSED_STIME / PROFILE_COUNT); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_start); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_loadavg (&data.loadavg); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_end); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime, | ||||
| 			  &elapsed_utime); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime, | ||||
| 			  &elapsed_stime); | ||||
|  | ||||
| 	printf ("Loadavg      (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n", | ||||
| 		(unsigned long) data.loadavg.flags, PROFILE_COUNT, | ||||
| 		(long double) ELAPSED_UTIME / PROFILE_COUNT, | ||||
| 		(long double) ELAPSED_STIME / PROFILE_COUNT); | ||||
|  | ||||
| 	printf ("\n"); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_start); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT_EXPENSIVE; c++) { | ||||
| 		ptr = glibtop_get_proclist (&data.proclist, 0, 0); | ||||
| 		glibtop_free (ptr); | ||||
| 	} | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_end); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime, | ||||
| 			  &elapsed_utime); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime, | ||||
| 			  &elapsed_stime); | ||||
|  | ||||
| 	printf ("Proclist     (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n", | ||||
| 		(unsigned long) data.proclist.flags, | ||||
| 		PROFILE_COUNT_EXPENSIVE, | ||||
| 		(long double) ELAPSED_UTIME / PROFILE_COUNT_EXPENSIVE, | ||||
| 		(long double) ELAPSED_STIME / PROFILE_COUNT_EXPENSIVE); | ||||
|  | ||||
| 	pid = getpid (); | ||||
|  | ||||
| 	printf ("\n"); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_start); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_proc_state (&data.proc_state, pid); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_end); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime, | ||||
| 			  &elapsed_utime); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime, | ||||
| 			  &elapsed_stime); | ||||
|  | ||||
| 	printf ("Proc_State   (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n", | ||||
| 		(unsigned long) data.proc_state.flags, PROFILE_COUNT, | ||||
| 		(long double) ELAPSED_UTIME / PROFILE_COUNT, | ||||
| 		(long double) ELAPSED_STIME / PROFILE_COUNT); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_start); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_proc_uid (&data.proc_uid, pid); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_end); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime, | ||||
| 			  &elapsed_utime); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime, | ||||
| 			  &elapsed_stime); | ||||
|  | ||||
| 	printf ("Proc_Uid     (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n", | ||||
| 		(unsigned long) data.proc_uid.flags, PROFILE_COUNT, | ||||
| 		(long double) ELAPSED_UTIME / PROFILE_COUNT, | ||||
| 		(long double) ELAPSED_STIME / PROFILE_COUNT); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_start); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_proc_mem (&data.proc_mem, pid); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_end); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime, | ||||
| 			  &elapsed_utime); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime, | ||||
| 			  &elapsed_stime); | ||||
|  | ||||
| 	printf ("Proc_Mem     (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n", | ||||
| 		(unsigned long) data.proc_mem.flags, PROFILE_COUNT, | ||||
| 		(long double) ELAPSED_UTIME / PROFILE_COUNT, | ||||
| 		(long double) ELAPSED_STIME / PROFILE_COUNT); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_start); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_proc_segment (&data.proc_segment, pid); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_end); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime, | ||||
| 			  &elapsed_utime); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime, | ||||
| 			  &elapsed_stime); | ||||
|  | ||||
| 	printf ("Proc_Segment (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n", | ||||
| 		(unsigned long) data.proc_segment.flags, PROFILE_COUNT, | ||||
| 		(long double) ELAPSED_UTIME / PROFILE_COUNT, | ||||
| 		(long double) ELAPSED_STIME / PROFILE_COUNT); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_start); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_proc_time (&data.proc_time, pid); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_end); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime, | ||||
| 			  &elapsed_utime); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime, | ||||
| 			  &elapsed_stime); | ||||
|  | ||||
| 	printf ("Proc_Time    (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n", | ||||
| 		(unsigned long) data.proc_time.flags, PROFILE_COUNT, | ||||
| 		(long double) ELAPSED_UTIME / PROFILE_COUNT, | ||||
| 		(long double) ELAPSED_STIME / PROFILE_COUNT); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_start); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_proc_signal (&data.proc_signal, pid); | ||||
| 	 | ||||
| 	getrusage (RUSAGE_SELF, &rusage_end); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime, | ||||
| 			  &elapsed_utime); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime, | ||||
| 			  &elapsed_stime); | ||||
|  | ||||
| 	printf ("Proc_Signal  (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n", | ||||
| 		(unsigned long) data.proc_signal.flags, PROFILE_COUNT, | ||||
| 		(long double) ELAPSED_UTIME / PROFILE_COUNT, | ||||
| 		(long double) ELAPSED_STIME / PROFILE_COUNT); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_start); | ||||
|  | ||||
| 	for (c = 0; c < PROFILE_COUNT; c++) | ||||
| 		glibtop_get_proc_kernel (&data.proc_kernel, pid); | ||||
|  | ||||
| 	getrusage (RUSAGE_SELF, &rusage_end); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_utime, &rusage_start.ru_utime, | ||||
| 			  &elapsed_utime); | ||||
|  | ||||
| 	libgtop_timersub (&rusage_end.ru_stime, &rusage_start.ru_stime, | ||||
| 			  &elapsed_stime); | ||||
|  | ||||
| 	printf ("Proc_Kernel  (0x%08lx): %7lu - %9.2Lf - %9.2Lf\n", | ||||
| 		(unsigned long) data.proc_kernel.flags, PROFILE_COUNT, | ||||
| 		(long double) ELAPSED_UTIME / PROFILE_COUNT, | ||||
| 		(long double) ELAPSED_STIME / PROFILE_COUNT); | ||||
| 	 | ||||
| 	getrusage (RUSAGE_SELF, &total_end); | ||||
|  | ||||
| 	libgtop_timersub (&total_end.ru_utime, &total_start.ru_utime, | ||||
| 			  &elapsed_utime); | ||||
|  | ||||
| 	libgtop_timersub (&total_end.ru_stime, &total_start.ru_stime, | ||||
| 			  &elapsed_stime); | ||||
|  | ||||
| 	printf ("-------------------------------------------" | ||||
| 		"---------------\n"); | ||||
|  | ||||
| 	printf ("%-36s %9lu - %9lu\n\n", "TOTAL", | ||||
| 		ELAPSED_UTIME, ELAPSED_STIME); | ||||
|  | ||||
| 	printf ("All timings are in clock ticks " | ||||
| 		"(1000000 ticks per second).\n\n"); | ||||
|  | ||||
| 	glibtop_close (); | ||||
|  | ||||
| 	exit (0); | ||||
| } | ||||
| @@ -1,4 +1,4 @@ | ||||
| glibtopdir		= $(includedir)/glibtop | ||||
| glibtopdir		= $(includedir)/libgtop-2.0/glibtop | ||||
|  | ||||
| glibtop_HEADERS		= close.h loadavg.h prockernel.h procstate.h \ | ||||
| 			  sem_limits.h uptime.h command.h mem.h proclist.h \ | ||||
|   | ||||
							
								
								
									
										50
									
								
								include/glibtop/array.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								include/glibtop/array.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,50 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #ifndef __GLIBTOP_ARRAY_H__ | ||||
| #define __GLIBTOP_ARRAY_H__ | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/global.h> | ||||
|  | ||||
| G_BEGIN_DECLS | ||||
|  | ||||
| #define GLIBTOP_ARRAY_NUMBER		0 | ||||
| #define GLIBTOP_ARRAY_SIZE		1 | ||||
| #define GLIBTOP_ARRAY_TOTAL		2 | ||||
|  | ||||
| #define GLIBTOP_MAX_ARRAY		3 | ||||
|  | ||||
| typedef struct _glibtop_array	glibtop_array; | ||||
|  | ||||
| struct _glibtop_array | ||||
| { | ||||
|     u_int64_t flags, | ||||
| 	number,		/* GLIBTOP_ARRAY_NUMBER	*/ | ||||
| 	size,		/* GLIBTOP_ARRAY_SIZE	*/ | ||||
| 	total;		/* GLIBTOP_ARRAY_TOTAL	*/ | ||||
| }; | ||||
|  | ||||
| #endif | ||||
							
								
								
									
										43
									
								
								include/glibtop/call-vector.h.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								include/glibtop/call-vector.h.in
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,43 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| @@AUTOGEN_COMMENT@@ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #ifndef __GLIBTOP_CALL_VECTOR_H__ | ||||
| #define __GLIBTOP_CALL_VECTOR_H__ | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/union.h> | ||||
|  | ||||
| G_BEGIN_DECLS | ||||
|  | ||||
| struct _glibtop_call_vector | ||||
| { | ||||
|     @@GLIBTOP_CALL_VECTOR@@ | ||||
| }; | ||||
|  | ||||
| G_END_DECLS | ||||
|  | ||||
| #endif | ||||
							
								
								
									
										116
									
								
								include/glibtop/call-vector.pl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										116
									
								
								include/glibtop/call-vector.pl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,116 @@ | ||||
| #!/usr/bin/perl | ||||
|  | ||||
| require 'c_types.pl'; | ||||
|  | ||||
| die "Usage: $0 features.def call-vector.h.in" unless $#ARGV == 1; | ||||
|  | ||||
| $[ = 1;			# set array base to 1 | ||||
| $, = ' ';		# set output field separator | ||||
| $\ = "\n";		# set output record separator | ||||
|  | ||||
| sub toupper { | ||||
|     local($_) = @_; | ||||
|     tr/a-z/A-Z/; | ||||
|     return $_; | ||||
| } | ||||
|  | ||||
| sub tolower { | ||||
|     local($_) = @_; | ||||
|     tr/A-Z/a-z/; | ||||
|     return $_; | ||||
| } | ||||
|  | ||||
| $func_decl_code = ''; | ||||
|  | ||||
| open FEATURESDEF, $ARGV[1] or | ||||
|   die "open ($ARGV[1]): $!"; | ||||
|  | ||||
| while (<FEATURESDEF>) { | ||||
|   chop;				# strip record separator | ||||
|    | ||||
|   if (/^[^\#]/) { | ||||
|     &parse_features_def ($_); | ||||
|   } | ||||
| } | ||||
|  | ||||
| close FEATURESDEF; | ||||
|  | ||||
| sub parse_features_def { | ||||
|   local($line) = @_; | ||||
|   @line_fields = split(/\|/, $line, 9999); | ||||
|   $retval = $line_fields[1]; | ||||
|   $element_def = $line_fields[3]; | ||||
|   $feature = $line_fields[2]; | ||||
|   $param_def = $line_fields[4]; | ||||
|  | ||||
|   $orig = $feature; | ||||
|   $feature =~ s/^@//; | ||||
|   $space = $feature; | ||||
|   $space =~ s/./ /g; | ||||
|  | ||||
|   if ($retval eq 'retval') { | ||||
|     $retval_param = '&retval'; | ||||
|     $retval = 'int'; | ||||
|   } | ||||
|   elsif ($retval !~ /^void$/) { | ||||
|     $retval_param = 'NULL'; | ||||
|   } | ||||
|   else { | ||||
|     $retval_param = 'NULL'; | ||||
|   } | ||||
|   | ||||
|   if ($retval =~ /^(array|pointer)\((.*)\)$/) { | ||||
|     $retval = ($2 eq 'string') ? 'char **' : "$2 *"; | ||||
|   } | ||||
|  | ||||
|   $param_decl = ''; | ||||
|   $nr_params = (@params = split(/:/, $param_def, 9999)); | ||||
|   for ($param = 1; $param <= $nr_params; $param++) { | ||||
|     $list = $params[$param]; | ||||
|     $type = $params[$param]; | ||||
|     $type =~ s/\(.*//; | ||||
|     $list =~ s/^.*\(//; | ||||
|     $list =~ s/\)$//; | ||||
|     $count = (@fields = split(/,/, $list, 9999)); | ||||
|     for ($field = 1; $field <= $count; $field++) { | ||||
|       my $c_type = $typeinfo->{$type}->[1]; | ||||
|  | ||||
|       $param_decl = $param_decl . ', '; | ||||
|       $param_decl = $param_decl . $c_type; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   if ($line_fields[3] eq '') { | ||||
|     $func_decl_code .= sprintf | ||||
|       (qq[\t%s (*%s) (glibtop_server *, glibtop_closure *%s);\n], $retval, $feature, $param_decl); | ||||
|   } elsif ($line_fields[3] eq 'array') { | ||||
|     $func_decl_code .= sprintf | ||||
|       (qq[\t%s (*%s) (glibtop_server *, glibtop_closure *, glibtop_array *%s);\n], $retval, $feature, $param_decl); | ||||
|   } elsif ($line_fields[3] =~ /^array/) { | ||||
|     $func_decl_code .= sprintf | ||||
|       (qq[\t%s (*%s) (glibtop_server *, glibtop_closure *, glibtop_array *, %s *%s);\n], $retval, $feature, 'glibtop_'.$feature, $param_decl); | ||||
|   } else { | ||||
|     $func_decl_code .= sprintf | ||||
|       (qq[\t%s (*%s) (glibtop_server *, glibtop_closure *, %s *%s);\n], $retval, $feature, 'glibtop_'.$feature, $param_decl); | ||||
|   } | ||||
| } | ||||
|  | ||||
| chop $func_decl_code; | ||||
|  | ||||
| $auto_gen_comment = sprintf | ||||
|   (qq[/*\n * This file is automatically generated.\n * Please modify `call-vector.pl' and `call-vector.h.in'.\n */]); | ||||
|  | ||||
| open CALLVECTOR, $ARGV[2] or | ||||
|   die "open ($ARGV[2]): $!"; | ||||
|  | ||||
| while (<CALLVECTOR>) { | ||||
|   chop; | ||||
|  | ||||
|   s/^\s*\@\@GLIBTOP_CALL_VECTOR\@\@\s*$/$func_decl_code/; | ||||
|  | ||||
|   s/^\s*\@\@AUTOGEN_COMMENT\@\@\s*$/$auto_gen_comment/; | ||||
| } continue { | ||||
|   print $_; | ||||
| } | ||||
|  | ||||
| close CALLVECTOR; | ||||
							
								
								
									
										91
									
								
								include/glibtop/compat_10.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										91
									
								
								include/glibtop/compat_10.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,91 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #ifndef __GLIBTOP_COMPAT10_H__ | ||||
| #define __GLIBTOP_COMPAT10_H__ | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/global.h> | ||||
|  | ||||
| G_BEGIN_DECLS | ||||
|  | ||||
| /* glibtop_cpu */ | ||||
|  | ||||
| #define GLIBTOP_XCPU_TOTAL		GLIBTOP_CPU_XCPU_TOTAL | ||||
| #define GLIBTOP_XCPU_USER		GLIBTOP_CPU_XCPU_USER | ||||
| #define GLIBTOP_XCPU_NICE		GLIBTOP_CPU_XCPU_NICE | ||||
| #define GLIBTOP_XCPU_SYS		GLIBTOP_CPU_XCPU_SYS | ||||
| #define GLIBTOP_XCPU_IDLE		GLIBTOP_CPU_XCPU_IDLE | ||||
| #define GLIBTOP_XCPU_FLAGS		GLIBTOP_CPU_XCPU_FLAGS | ||||
|  | ||||
| /* glibtop_proclist */ | ||||
|  | ||||
| #define GLIBTOP_PROCLIST_NUMBER		GLIBTOP_ARRAY_NUMBER | ||||
| #define GLIBTOP_PROCLIST_SIZE		GLIBTOP_ARRAY_SIZE | ||||
| #define GLIBTOP_PROCLIST_TOTAL		GLIBTOP_ARRAY_TOTAL | ||||
|  | ||||
| #define GLIBTOP_MAX_PROCLIST		GLIBTOP_MAX_ARRAY | ||||
|  | ||||
| typedef struct _glibtop_array		glibtop_proclist; | ||||
|  | ||||
| /* glibtop_mountlist */ | ||||
|  | ||||
| #define GLIBTOP_MOUNTLIST_NUMBER	GLIBTOP_ARRAY_NUMBER | ||||
| #define GLIBTOP_MOUNTLIST_SIZE		GLIBTOP_ARRAY_SIZE | ||||
| #define GLIBTOP_MOUNTLIST_TOTAL		GLIBTOP_ARRAY_TOTAL | ||||
|  | ||||
| #define GLIBTOP_MAX_MOUNTLIST		GLIBTOP_MAX_ARRAY | ||||
|  | ||||
| typedef struct _glibtop_array		glibtop_mountlist; | ||||
|  | ||||
| /* glibtop_proc_args */ | ||||
|  | ||||
| #define GLIBTOP_PROC_ARGS_SIZE		0 | ||||
|  | ||||
| #define GLIBTOP_MAX_PROC_ARGS		1 | ||||
|  | ||||
| typedef struct _glibtop_array		glibtop_proc_args; | ||||
|  | ||||
| /* glibtop_proc_map */ | ||||
|  | ||||
| #define GLIBTOP_PROC_MAP_NUMBER		GLIBTOP_ARRAY_NUMBER | ||||
| #define GLIBTOP_PROC_MAP_SIZE		GLIBTOP_ARRAY_SIZE | ||||
| #define GLIBTOP_PROC_MAP_TOTAL		GLIBTOP_ARRAY_TOTAL | ||||
|  | ||||
| #define GLIBTOP_MAX_PROC_MAP		GLIBTOP_MAX_ARRAY | ||||
|  | ||||
| typedef struct _glibtop_array		glibtop_proc_map; | ||||
|  | ||||
| /* glibtop_interface_names */ | ||||
|  | ||||
| #define GLIBTOP_INTERFACE_NAMES_NUMBER	GLIBTOP_ARRAY_NUMBER | ||||
| #define GLIBTOP_INTERFACE_NAMES_SIZE	GLIBTOP_ARRAY_SIZE | ||||
| #define GLIBTOP_INTERFACE_NAMES_TOTAL	GLIBTOP_ARRAY_TOTAL | ||||
|  | ||||
| #define GLIBTOP_MAX_INTERFACE_NAMES	GLIBTOP_MAX_ARRAY | ||||
|  | ||||
| typedef struct _glibtop_array		glibtop_interface_names; | ||||
|  | ||||
| #endif | ||||
| @@ -28,13 +28,22 @@ | ||||
|  | ||||
| BEGIN_LIBGTOP_DECLS | ||||
|  | ||||
| #ifndef G_GNUC_UNUSED | ||||
| #if	__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4) | ||||
| #define G_GNUC_UNUSED				\ | ||||
|   __attribute__((unused)) | ||||
| #else	/* !__GNUC__ */ | ||||
| #define	G_GNUC_UNUSED | ||||
| #endif	/* !__GNUC__ */ | ||||
| #endif /* defined G_GNUC_UNUSED */ | ||||
|  | ||||
| void glibtop_error_vr (glibtop *server, char *format, va_list args); | ||||
| void glibtop_warn_vr (glibtop *server, char *format, va_list args); | ||||
|  | ||||
| void glibtop_error_io_vr (glibtop *server, char *format, int, va_list args); | ||||
| void glibtop_warn_io_vr (glibtop *server, char *format, int, va_list args); | ||||
|  | ||||
| static void | ||||
| static void G_GNUC_UNUSED | ||||
| glibtop_error_r (glibtop *server, char *format, ...) | ||||
| { | ||||
| 	va_list args; | ||||
| @@ -44,7 +53,7 @@ glibtop_error_r (glibtop *server, char *format, ...) | ||||
| 	va_end (args); | ||||
| } | ||||
|  | ||||
| static void | ||||
| static void G_GNUC_UNUSED | ||||
| glibtop_warn_r (glibtop *server, char *format, ...) | ||||
| { | ||||
| 	va_list args; | ||||
| @@ -54,7 +63,7 @@ glibtop_warn_r (glibtop *server, char *format, ...) | ||||
| 	va_end (args); | ||||
| } | ||||
|  | ||||
| static void | ||||
| static void G_GNUC_UNUSED | ||||
| glibtop_error_io_r (glibtop *server, char *format, ...) | ||||
| { | ||||
| 	va_list args; | ||||
| @@ -64,7 +73,7 @@ glibtop_error_io_r (glibtop *server, char *format, ...) | ||||
| 	va_end (args); | ||||
| } | ||||
|  | ||||
| static void | ||||
| static void G_GNUC_UNUSED | ||||
| glibtop_warn_io_r (glibtop *server, char *format, ...) | ||||
| { | ||||
| 	va_list args; | ||||
|   | ||||
							
								
								
									
										95
									
								
								include/glibtop/errors.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										95
									
								
								include/glibtop/errors.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,95 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #ifndef __GLIBTOP_ERRORS_H__ | ||||
| #define __GLIBTOP_ERRORS_H__ | ||||
|  | ||||
| #include <glibtop.h> | ||||
|  | ||||
| #include <glib/gerror.h> | ||||
|  | ||||
| G_BEGIN_DECLS | ||||
|  | ||||
| #define GLIBTOP_ERROR glibtop_error_quark () | ||||
|  | ||||
| GQuark glibtop_error_quark (void) G_GNUC_CONST; | ||||
|  | ||||
| typedef enum { | ||||
|     GLIBTOP_ERROR_NO_ERROR = 0, | ||||
|     GLIBTOP_ERROR_UNKNOWN, | ||||
|     GLIBTOP_ERROR_INVALID_ARGUMENT, | ||||
|     GLIBTOP_ERROR_NO_SUCH_PARAMETER, | ||||
|     GLIBTOP_ERROR_READONLY_VALUE, | ||||
|     GLIBTOP_ERROR_SIZE_MISMATCH, | ||||
|  | ||||
|     GLIBTOP_ERROR_SERVER_COMM_FAILURE, | ||||
|  | ||||
|     GLIBTOP_ERROR_NO_SUCH_PROCESS, | ||||
|  | ||||
|     GLIBTOP_ERROR_NO_KERNEL_SUPPORT, | ||||
|     GLIBTOP_ERROR_INCOMPATIBLE_KERNEL, | ||||
|  | ||||
|     GLIBTOP_ERROR_NO_SUCH_BACKEND, | ||||
|     GLIBTOP_ERROR_NOT_IMPLEMENTED, | ||||
|     GLIBTOP_ERROR_NO_BACKEND_OPENED, | ||||
|  | ||||
|     GLIBTOP_ERROR_DEMARSHAL_ERROR | ||||
| } glibtop_error; | ||||
|  | ||||
| void | ||||
| glibtop_error_vl (glibtop_client *client, glibtop_error code, | ||||
| 		  const char *format, va_list args); | ||||
|  | ||||
| void | ||||
| glibtop_error_io_vl (glibtop_client *client, glibtop_error code, | ||||
| 		     int io_errno, const char *format, va_list args); | ||||
|  | ||||
| void | ||||
| glibtop_warn_vl (glibtop_client *client, glibtop_error code, | ||||
| 		 const char *format, va_list args); | ||||
|  | ||||
| void | ||||
| glibtop_warn_io_vl (glibtop_client *client, glibtop_error code, | ||||
| 		    int io_errno, const char *format, va_list args); | ||||
|  | ||||
| void | ||||
| glibtop_error_l (glibtop_client *client, glibtop_error code, | ||||
| 		 char *format, ...); | ||||
|  | ||||
| void | ||||
| glibtop_warn_l (glibtop_client *client, glibtop_error code, | ||||
| 		char *format, ...); | ||||
|  | ||||
| void | ||||
| glibtop_error_io_l (glibtop_client *client, glibtop_error code, | ||||
| 		    char *format, ...); | ||||
|  | ||||
| void | ||||
| glibtop_warn_io_l (glibtop_client *client, glibtop_error code, | ||||
| 		   char *format, ...); | ||||
|  | ||||
| G_END_DECLS | ||||
|  | ||||
| #endif | ||||
							
								
								
									
										50
									
								
								include/glibtop/glib-arrays.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								include/glibtop/glib-arrays.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,50 @@ | ||||
| /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ | ||||
|  | ||||
| /* $Id$ */ | ||||
|  | ||||
| /* Copyright (C) 1998-99 Martin Baulig | ||||
|    This file is part of LibGTop 1.0. | ||||
|  | ||||
|    Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. | ||||
|  | ||||
|    LibGTop is free software; you can redistribute it and/or modify it | ||||
|    under the terms of the GNU General Public License as published by | ||||
|    the Free Software Foundation; either version 2 of the License, | ||||
|    or (at your option) any later version. | ||||
|  | ||||
|    LibGTop is distributed in the hope that it will be useful, but WITHOUT | ||||
|    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||
|    for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU General Public License | ||||
|    along with LibGTop; see the file COPYING. If not, write to the | ||||
|    Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
|    Boston, MA 02111-1307, USA. | ||||
| */ | ||||
|  | ||||
| #ifndef __GLIBTOP_GLIB_ARRAYS_H__ | ||||
| #define __GLIBTOP_GLIB_ARRAYS_H__ | ||||
|  | ||||
| #include <glibtop.h> | ||||
| #include <glibtop/array.h> | ||||
| #include <glibtop/global.h> | ||||
|  | ||||
| #include <glib.h> | ||||
|  | ||||
| G_BEGIN_DECLS | ||||
|  | ||||
| GPtrArray * | ||||
| glibtop_get_proc_args_as_array_l (glibtop_client *client, pid_t pid); | ||||
|  | ||||
| GArray * | ||||
| glibtop_get_proclist_as_array_l (glibtop_client *client, int64_t which, int64_t arg); | ||||
|  | ||||
| GPtrArray * | ||||
| glibtop_get_proc_map_as_array_l (glibtop_client *client, pid_t pid); | ||||
|  | ||||
| GPtrArray * | ||||
| glibtop_get_mountlist_as_array_l (glibtop_client *client, int all_fs); | ||||
|  | ||||
| G_END_DECLS | ||||
| #endif | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user