1fa8c286d50d83ae86d2ca8df52f7aba8b6c5bae1Dmitry V. Levin/* 2fa8c286d50d83ae86d2ca8df52f7aba8b6c5bae1Dmitry V. Levin * This file is part of attach-p-cmd strace test. 3fa8c286d50d83ae86d2ca8df52f7aba8b6c5bae1Dmitry V. Levin * 4fa8c286d50d83ae86d2ca8df52f7aba8b6c5bae1Dmitry V. Levin * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org> 5fa8c286d50d83ae86d2ca8df52f7aba8b6c5bae1Dmitry V. Levin * All rights reserved. 6fa8c286d50d83ae86d2ca8df52f7aba8b6c5bae1Dmitry V. Levin * 7fa8c286d50d83ae86d2ca8df52f7aba8b6c5bae1Dmitry V. Levin * Redistribution and use in source and binary forms, with or without 8fa8c286d50d83ae86d2ca8df52f7aba8b6c5bae1Dmitry V. Levin * modification, are permitted provided that the following conditions 9fa8c286d50d83ae86d2ca8df52f7aba8b6c5bae1Dmitry V. Levin * are met: 10fa8c286d50d83ae86d2ca8df52f7aba8b6c5bae1Dmitry V. Levin * 1. Redistributions of source code must retain the above copyright 11fa8c286d50d83ae86d2ca8df52f7aba8b6c5bae1Dmitry V. Levin * notice, this list of conditions and the following disclaimer. 12fa8c286d50d83ae86d2ca8df52f7aba8b6c5bae1Dmitry V. Levin * 2. Redistributions in binary form must reproduce the above copyright 13fa8c286d50d83ae86d2ca8df52f7aba8b6c5bae1Dmitry V. Levin * notice, this list of conditions and the following disclaimer in the 14fa8c286d50d83ae86d2ca8df52f7aba8b6c5bae1Dmitry V. Levin * documentation and/or other materials provided with the distribution. 15fa8c286d50d83ae86d2ca8df52f7aba8b6c5bae1Dmitry V. Levin * 3. The name of the author may not be used to endorse or promote products 16fa8c286d50d83ae86d2ca8df52f7aba8b6c5bae1Dmitry V. Levin * derived from this software without specific prior written permission. 17fa8c286d50d83ae86d2ca8df52f7aba8b6c5bae1Dmitry V. Levin * 18fa8c286d50d83ae86d2ca8df52f7aba8b6c5bae1Dmitry V. Levin * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 19fa8c286d50d83ae86d2ca8df52f7aba8b6c5bae1Dmitry V. Levin * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 20fa8c286d50d83ae86d2ca8df52f7aba8b6c5bae1Dmitry V. Levin * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21fa8c286d50d83ae86d2ca8df52f7aba8b6c5bae1Dmitry V. Levin * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 22fa8c286d50d83ae86d2ca8df52f7aba8b6c5bae1Dmitry V. Levin * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 23fa8c286d50d83ae86d2ca8df52f7aba8b6c5bae1Dmitry V. Levin * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24fa8c286d50d83ae86d2ca8df52f7aba8b6c5bae1Dmitry V. Levin * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25fa8c286d50d83ae86d2ca8df52f7aba8b6c5bae1Dmitry V. Levin * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26fa8c286d50d83ae86d2ca8df52f7aba8b6c5bae1Dmitry V. Levin * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 27fa8c286d50d83ae86d2ca8df52f7aba8b6c5bae1Dmitry V. Levin * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28fa8c286d50d83ae86d2ca8df52f7aba8b6c5bae1Dmitry V. Levin */ 29fa8c286d50d83ae86d2ca8df52f7aba8b6c5bae1Dmitry V. Levin 30fa8c286d50d83ae86d2ca8df52f7aba8b6c5bae1Dmitry V. Levin#include "tests.h" 31d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes#include <errno.h> 32fa8c286d50d83ae86d2ca8df52f7aba8b6c5bae1Dmitry V. Levin#include <stdio.h> 33d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes#include <sys/stat.h> 34fa8c286d50d83ae86d2ca8df52f7aba8b6c5bae1Dmitry V. Levin#include <unistd.h> 35fa8c286d50d83ae86d2ca8df52f7aba8b6c5bae1Dmitry V. Levin 36fa8c286d50d83ae86d2ca8df52f7aba8b6c5bae1Dmitry V. Levinint 37fa8c286d50d83ae86d2ca8df52f7aba8b6c5bae1Dmitry V. Levinmain(void) 38fa8c286d50d83ae86d2ca8df52f7aba8b6c5bae1Dmitry V. Levin{ 39d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes static const char lockdir[] = "attach-p-cmd.test-lock"; 40d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes /* wait for the lock directory to be created by peer */ 41d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes while (rmdir(lockdir)) { 42d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes if (ENOENT != errno) 43d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes perror_msg_and_fail("rmdir: %s", lockdir); 44d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes } 45d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes 4609fc30c4c7a57395daf79392e6251df6621b0fc8Dmitry V. Levin static const char dir[] = "attach-p-cmd.test cmd"; 47fa8c286d50d83ae86d2ca8df52f7aba8b6c5bae1Dmitry V. Levin pid_t pid = getpid(); 4809fc30c4c7a57395daf79392e6251df6621b0fc8Dmitry V. Levin int rc = chdir(dir); 4909fc30c4c7a57395daf79392e6251df6621b0fc8Dmitry V. Levin 50d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes printf("%-5d chdir(\"%s\") = %s\n" 5109fc30c4c7a57395daf79392e6251df6621b0fc8Dmitry V. Levin "%-5d +++ exited with 0 +++\n", 52d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes pid, dir, sprintrc(rc), pid); 5309fc30c4c7a57395daf79392e6251df6621b0fc8Dmitry V. Levin 54fa8c286d50d83ae86d2ca8df52f7aba8b6c5bae1Dmitry V. Levin return 0; 55fa8c286d50d83ae86d2ca8df52f7aba8b6c5bae1Dmitry V. Levin} 56