summaryrefslogtreecommitdiff
path: root/group.c
diff options
context:
space:
mode:
Diffstat (limited to 'group.c')
-rw-r--r--group.c240
1 files changed, 0 insertions, 240 deletions
diff --git a/group.c b/group.c
deleted file mode 100644
index 0c0d5a0..0000000
--- a/group.c
+++ /dev/null
@@ -1,240 +0,0 @@
-#include <assert.h>
-#include <stdbool.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-#include "include/entry.h"
-#include "include/group.h"
-#include "include/read_cfg.h"
-
-typedef struct group{
- char name[BUF_LEN];
- char program[BUF_LEN];
- char flags[BUF_LEN];
- struct entry *head;
- struct entry *tail;
- struct group *next;
- int entry_count;
- bool launcher_quotes; //set by a group option whether or not the launcher should be wrapped by quotes
-} GROUP;
-
-GROUP *groups_head;
-GROUP *gp; //pointer to remember last group that was looked at
-int group_count = 0;
-int total_count = 0;
-
-GROUP *create_group(char *new_name){
- GROUP *new = malloc(sizeof(GROUP));
-
- strcpy(new->name, new_name); //by default, group name is equivalent to the path
- strcpy(new->program, "./"); //by default, launch an entry by executing it
- new->flags[0] = '\0'; //by default, no command line flags
- new->head = NULL;
- new->tail = NULL;
- new->next = NULL;
- new->entry_count = 0;
- new->launcher_quotes = true;
-
- group_count++;
- return new;
-}
-
-//add an entry to a group or add a new empty group
-//FIXME maybe make this function part of a seperate file to handle a tree (AVL?)
-//for now, simple linked list implementation
-void group_add(char *gname, ENTRY *addme){
- int i;
- GROUP *new;
- GROUP *last = NULL; //last element in an existing group list (NULL to start)
-
- //only adding a new group
- if(addme == NULL){
- gp = groups_head;
- while(gp != NULL){
- if(!(strcmp(gp->name, gname))){
- printf("config error: %s is already a group!\n", gname);
- return;
- }
-
- last = gp;
- gp = gp->next;
- }
- }
-
- //The previous group is not the same as the new group to add to
- if(!(gp != NULL && (!(strcmp(gp->name, gname))))){
- gp = groups_head;
- while(gp != NULL){
- //gname matches groups[i]'s name, add entry here
- if(!(strcmp(gp->name, gname))) break;
-
- last = gp;
- gp = gp->next;
- }
- }
-
- //was unable to find a matching existing group
- //need to create new group to insert the entry into
- if(gp == NULL){
- new = create_group(gname);
-
- //first group
- if(last == NULL) groups_head = new;
-
- //add to the end of the groups
- else last->next = new;
-
- gp = new;
- }
-
- //add the entry to the list of entries in the group
- if(addme != NULL){
- i = entry_add(gp->head, gp->tail, addme);
- switch(i){
- case 1:
- gp->head = addme;
- break;
-
- case 2:
- gp->tail = addme;
- break;
-
- case 3:
- gp->head = addme;
- gp->tail = addme;
- break;
-
- }
-
- gp->entry_count++;
- total_count++;
- }
-
- return;
-}
-
-void group_rm(GROUP *g){
-
- clear_entries(g->head);
-
- free(g);
- group_count--;
- return;
-}
-
-void clean_groups(){
- GROUP *dummy_head;
- GROUP *trav;
- GROUP *hold;
-
- if(group_count == 0){
- printf("Error: no groups! ");
- refer_to_doc();
- exit(0);
- }
-
- else{
- dummy_head = create_group("dummy");
- dummy_head->next = groups_head;
- trav = dummy_head;
-
- while(trav != NULL){
- //found empty group for removal
- if(trav->next != NULL && trav->next->entry_count < 1){
- printf("Omitting empty group \"%s\"\n", trav->next->name);
- hold = trav->next;
- trav->next = trav->next->next;
- group_rm(hold);
- }
- else trav = trav->next;
- }
- }
-
- //ensure groups->head is still correct
- groups_head = dummy_head->next;
- group_rm(dummy_head);
- return;
-
-}
-
-
-GROUP **get_groups(){
- GROUP **arr = malloc(sizeof(GROUP *) * group_count);
- GROUP *trav = groups_head;
- int i;
-
- for(i = 0; i < group_count; i++){
- arr[i] = trav;
- trav = trav->next;
- }
-
- return arr;
-}
-
-char *get_gname(GROUP *g){
- assert(g != NULL);
- return g->name;
-}
-
-char *get_gprog(GROUP *g){
- assert(g != NULL);
- return g->program;
-}
-
-void set_gprog(GROUP *g, char *p){
- assert(g != NULL);
- strcpy(g->program, p);
- return;
-}
-
-char *get_gflags(GROUP *g){
- assert(g != NULL);
- return g->flags;
-}
-
-void set_gflags(GROUP *g, char *p){
- assert(g != NULL);
- strcpy(g->flags, p);
-}
-
-ENTRY *get_ghead(GROUP *g){
- assert(g != NULL);
- return g->head;
-}
-
-int get_ecount(GROUP *g){
- assert(g != NULL);
- return g->entry_count;
-}
-
-void set_ecount(GROUP *g, int new_count){
- assert(g != NULL);
- g->entry_count = new_count;
-}
-
-void set_gquotes(GROUP *g, bool b){
- assert(g != NULL);
- g->launcher_quotes = b;
-}
-
-bool get_gquotes(GROUP *g){
- return g->launcher_quotes;
-}
-
-int get_gcount(){
- return group_count;
-}
-
-void group_debug(){
- GROUP *trav = groups_head;
-
- while(trav != NULL){
- entry_debug(trav->head);
- printf("\tfrom group %s\n", trav->name);
- trav = trav->next;
- }
-
- return;
-}