int unlockAllExp(char *userptr, int target_pid, int mode ) { char fname[ MAXPATHL ]; char host_of_lock[ MAXPATHL ]; int expn, ival, mode_of_lock, pid_of_lock, ulen; DIR *dir_stream; struct dirent *cur_entry; if (mode < FIRST_MODE || mode > NUM_LOCK_MODES) return( -1 ); ulen = strlen( userptr ); if (ulen < 1 || ulen > MAXPATHL-20) return( -1 ); dir_stream = opendir( userptr ); if (dir_stream == NULL) { perror( "access user's VNMR directory in unlock all exps" ); return( -1 ); } while ( (cur_entry = readdir( dir_stream )) != NULL ) { if (nscmp( "lock_*.primary", cur_entry->d_name )) { ival = sscanf( cur_entry->d_name, "lock_%d.primary", &expn ); if (ival != 1) continue; get_primary_lockfile( expn, userptr, &fname[ 0 ] ); if (verify_primary_lock( &fname[ 0 ], &mode_of_lock, &host_of_lock[ 0 ], &pid_of_lock ) == 0) { if (mode_of_lock == mode && pid_of_lock == target_pid && strcmp( HostName, &host_of_lock[ 0 ] ) == 0) unlink( &fname[ 0 ] ); } else unlink( &fname[ 0 ] ); /* remove bad lock file */ } } return( 0 ); }
static void json_print_container(struct lyout *out, int level, const struct lyd_node *node) { const char *schema; if (!node->parent || nscmp(node, node->parent)) { /* print "namespace" */ schema = lys_node_module(node->schema)->name; ly_print(out, "%*s\"%s:%s\": {\n", LEVEL, INDENT, schema, node->schema->name); } else { ly_print(out, "%*s\"%s\": {\n", LEVEL, INDENT, node->schema->name); } level++; if (node->attr) { ly_print(out, "%*s\"@\": {\n", LEVEL, INDENT); json_print_attrs(out, level + 1, node); ly_print(out, "%*s}%s", LEVEL, INDENT, node->child ? ",\n" : ""); } json_print_nodes(out, level, node->child, 1); level--; ly_print(out, "%*s}", LEVEL, INDENT); }
static void json_print_anyxml(struct lyout *out, int level, const struct lyd_node *node) { const char *schema = NULL; if (!node->parent || nscmp(node, node->parent)) { /* print "namespace" */ schema = lys_node_module(node->schema)->name; ly_print(out, "%*s\"%s:%s\": [null]", LEVEL, INDENT, schema, node->schema->name); } else { ly_print(out, "%*s\"%s\": [null]", LEVEL, INDENT, node->schema->name); } /* print attributes as sibling leaf */ if (node->attr) { if (schema) { ly_print(out, ",\n%*s\"@%s:%s\": {\n", LEVEL, INDENT, schema, node->schema->name); } else { ly_print(out, ",\n%*s\"@%s\": {\n", LEVEL, INDENT, node->schema->name); } json_print_attrs(out, level + 1, node); ly_print(out, "%*s}", LEVEL, INDENT); } }
static void json_print_leaf(struct lyout *out, int level, const struct lyd_node *node, int onlyvalue) { struct lyd_node_leaf_list *leaf = (struct lyd_node_leaf_list *)node; const char *schema = NULL; if (!onlyvalue) { if (!node->parent || nscmp(node, node->parent)) { /* print "namespace" */ schema = lys_node_module(node->schema)->name; ly_print(out, "%*s\"%s:%s\": ", LEVEL, INDENT, schema, node->schema->name); } else { ly_print(out, "%*s\"%s\": ", LEVEL, INDENT, node->schema->name); } } switch (leaf->value_type & LY_DATA_TYPE_MASK) { case LY_TYPE_BINARY: case LY_TYPE_STRING: case LY_TYPE_BITS: case LY_TYPE_ENUM: case LY_TYPE_IDENT: case LY_TYPE_INST: json_print_string(out, leaf->value_str ? leaf->value_str : ""); break; case LY_TYPE_BOOL: case LY_TYPE_DEC64: case LY_TYPE_INT8: case LY_TYPE_INT16: case LY_TYPE_INT32: case LY_TYPE_INT64: case LY_TYPE_UINT8: case LY_TYPE_UINT16: case LY_TYPE_UINT32: case LY_TYPE_UINT64: ly_print(out, "%s", leaf->value_str ? leaf->value_str : "null"); break; case LY_TYPE_LEAFREF: if (leaf->value.leafref) { json_print_leaf(out, level, leaf->value.leafref, 1); } else { ly_print(out, ""); } break; case LY_TYPE_EMPTY: ly_print(out, "[null]"); break; default: /* error */ ly_print(out, "\"(!error!)\""); } /* print attributes as sibling leafs */ if (!onlyvalue && node->attr) { if (schema) { ly_print(out, ",\n%*s\"@%s:%s\": {\n", LEVEL, INDENT, schema, node->schema->name); } else { ly_print(out, ",\n%*s\"@%s\": {\n", LEVEL, INDENT, node->schema->name); } json_print_attrs(out, level + 1, node); ly_print(out, "%*s}", LEVEL, INDENT); } return; }
static void json_print_leaf_list(struct lyout *out, int level, const struct lyd_node *node, int is_list) { const char *schema = NULL; const struct lyd_node *list = node; int flag_empty = 0, flag_attrs = 0; if (!list->child) { /* empty, e.g. in case of filter */ flag_empty = 1; } if (!node->parent || nscmp(node, node->parent)) { /* print "namespace" */ schema = lys_node_module(node->schema)->name; ly_print(out, "%*s\"%s:%s\":", LEVEL, INDENT, schema, node->schema->name); } else { ly_print(out, "%*s\"%s\":", LEVEL, INDENT, node->schema->name); } if (flag_empty) { ly_print(out, " null"); return; } ly_print(out, " [\n"); if (!is_list) { ++level; } while (list) { if (is_list) { /* list print */ ++level; ly_print(out, "%*s{\n", LEVEL, INDENT); ++level; if (list->attr) { ly_print(out, "%*s\"@\": {\n", LEVEL, INDENT); json_print_attrs(out, level + 1, node); ly_print(out, "%*s}%s", LEVEL, INDENT, list->child ? ",\n" : ""); } json_print_nodes(out, level, list->child, 1); --level; ly_print(out, "%*s}", LEVEL, INDENT); --level; } else { /* leaf-list print */ ly_print(out, "%*s", LEVEL, INDENT); json_print_leaf(out, level, list, 1); if (list->attr) { flag_attrs = 1; } } for (list = list->next; list && list->schema != node->schema; list = list->next); if (list) { ly_print(out, ",\n"); } } if (!is_list) { --level; } ly_print(out, "\n%*s]", LEVEL, INDENT); /* attributes */ if (!is_list && flag_attrs) { if (schema) { ly_print(out, ",\n%*s\"@%s:%s\": [\n", LEVEL, INDENT, schema, node->schema->name); } else { ly_print(out, ",\n%*s\"@%s\": [\n", LEVEL, INDENT, node->schema->name); } level++; for (list = node; list; ) { if (list->attr) { ly_print(out, "%*s{ ", LEVEL, INDENT); json_print_attrs(out, 0, list); ly_print(out, "%*s}", LEVEL, INDENT); } else { ly_print(out, "%*snull", LEVEL, INDENT); } for (list = list->next; list && list->schema != node->schema; list = list->next); if (list) { ly_print(out, ",\n"); } } level--; ly_print(out, "\n%*s]", LEVEL, INDENT); } }