#!/usr/bin/perl

#
# Copyright 1995. Michael Veksler.
#

$IPC_RMID=0;
$USER=$ENV{USER};

open(IPCS,"ipcs|");

#
# The following part is OS dependant, it works under linux only.
# To make it work under other OS 
# You should fill in @shm, @sem, @msq lists, with the relevent IPC
# keys.

#
# This code was written to be as much as possible generic, but...
# It works for Linux and ALPHA. I had no BSD machine to test it.
# (As I remember, AIX will work also).

while(<IPCS>) {
    split;

    # try to find out the IPC-ID, assume it is the first number.
    foreach (@_) {
	$_ ne int($_) && next;	# not a decimal number
	$num=$_;
	last;
    }
    if (/mem/i .. /^\s*$/ ) {
	index($_,$USER)>=0 || next;
	push(@shm,$num);
    }
    if (/sem/i .. /^\s*$/ ) {
	index($_,$USER)>=0 || next;
	push(@sem,$num);
    }
    if (/mes/i .. /^\s*$/ ) {
	index($_,$USER)>=0 || next;
	push(@msq,$num);
    }
}


#
# This is the end of OS dependant code.
#

@shm && print "shmid ", join(":",@shm),"\n";
@sem && print "semid ", join(":",@sem),"\n";
@msq && print "msqid ", join(":",@msq),"\n";
foreach (@shm) {
    shmctl($_, $IPC_RMID,0);
}
foreach (@sem) {
    semctl($_, 0, $IPC_RMID,0);
}
foreach (@msq) {
    msgctl($_, $IPC_RMID,0);
}
